# 源片段

## 内容

- 1. 片段基础
- 2. 句子片段
  - 2.1. 关于规则
  - 2.2. 规则设置
    - 2.2.1. 规则集合
    - 2.2.2. 单个例子
  - 2.3. 片段规则中使用的正则表达式
    - 2.3.1. 正则表达式构造概要

## 片段基础

翻译记忆工具使用成为片段的文本单位运作。有很多中途径将一个文本切割成片段

OmegaT首先将文本分割成结构级别的片段。在这个过程中，只有源文本的结构被用来创建片段。例如：文本文件可能会在行终止、空行进行片段切割或者根本不在结构级别进行片段切割。带有格式的文件（OpenOffice.org, OpenDocument, XHTML 和 HTML文档）根据块级别（段落）标签进行片段切割。

可翻译的对象属性（对XHTML 或 HTML 文件）也被提取出来进行片段分割。

OmegaT 也根据句子进行分割。句子片段分割在结构级片段切割之后进行。很不幸的是，在翻译过程中，在两者过程间创建的片段都不能修改（分割或者合并）。我们当然认识到这是OmegaT的一大局限。

如果你对分割不满意，你需要从外部对源文件进行编辑，或者（和）修改句子片段分割规则。完成这些之后，你需要重新载入项目使你的修改生效。

## 句子片段分割

在OmegaT将源文件分割成逻辑单位——片段之后，对于格式化文件来说通常片段对应的就是段落，如果你不将句子片段分割关闭的话，它将进一步将这些块分割成句子。总体上来说，OmegaT将会把源文件逻辑块分割成你设置的任意片段。然而，在 缺省情况下， OmegaT 片段分割将会分割成句子，我们称之为： 句子 片段。

理论上，句子片段的创建使用的是 片段切割规则交换 (SRX)标准。但到本手册写作时为止，OmegaT既不完全支持所有的SRX功能，也不能导入或导出用SRX格式定义的规则。然而如果你懂得SRX是如何运行的，你也就知道OmegaT是如何工作的，因为它们或多或少是一样的。

### 关于规则

存在两种可能的规则

- 切割规则将文本分割成片段。
- 例外规则指出哪些文本不应该从其他文本中分离出来。

切割规则例子："Did it make sense?I was not sure." 在 "`?`"之后的部分可以被切割成两个片段。这是因为有一个为 "`?`"创建的规则。

例外规则举例： "Who is afraid of Mrs. Woolf?" 不能在"`.`"之后进行片段分割。因为存在一个 "`Mrs.`"的例外规则。

预定义的分割规则对多数欧洲语言和日语来说已经足够了，但是我们推荐你为要翻译的语言定义更多的例外规则，因为显而易见的是我们无法为所有的语言预定义所有可能的例外。

### 规则设置

要想设置规则，从主菜单选择 选项 -> 片段……。请注意：如果你在项目打开的时候改变片段分割选项，你必须重新导入项目以使改变生效。

#### 规则集

所有为匹配的语言模式定义的片段分割规则会以规定的优先级别得到应用，因此为特定语言定义的规则优先级会比缺省规则要高。

例如，为 Canadian French (FR-CA) 创建的规则优先级应该比为法语 (FR.*)创见规则的优先级要高，也比缺省规则(.*) 要高。当你的项目对加拿大法语进行翻译时，你的项目将会按照正确的顺序使用为加拿大法语定义的规则，为法语定义的规则和缺省的规则。

要创建空规则集合，可以点击对话框上半部的 新增按钮。一个空行将出现在表格的底部。改变规则的名称和语言模式语言模式的语法遵守正则表达式的语法规则。参阅下面的 正则表达式构造概要 章节。

如果你设置的规则处理语言——国家对，我们建议你使用上移按钮将它移到顶部。

要对规则集合进行编辑，只需在表格中点击它，该规则集合将会出现在窗口的底部。

中断/例外 检查框决定该规则是一条中断规则（勾上检查框）还是一条意外规则（不勾上检查框）。之前和之后两条正则表达式指定了意外规则和中断规则必须符合的条件。

片段分割的过程可以简化成如下所述：想象一个光标从第一个之后一到文本的最后一个符号之前。对于每个光标位置，我们按照给出的顺序应用每条规则，并将尝试将之前 模式匹配当前光标左边所有的文本，将之后 模式对右边的文本进行匹配，使之能够接触光标。

对于文本中的每个光标位置，如果程序的某些规则应用成功，如果是意外规则我们除了停止检查更多规则不做更多的事情；对于中断规则我们将左边的文本作为一个独立的片段。

#### 一个简单的例子

目标： 将句点('`.`')之后空格之前的片段设置为片段
  之前： `\.` 之后： `\s`
  注意： "`\.`" 指的是字符 "`.`"
  "`\s`" 指的是任何空白字符
目的： "`Mr."之后不设置为新片段`
  之前：`Mr\.` 之后： `\s`
  注意： 不要忘记将规则检查框设置为 未选中状态
目的： 将 "。"之后的文本设置为片段 (日文句点)
  之前： 。 之后： (空)
  注意： 你可以保留一个字段为空

### 片段规则中使用的正则表达式

片段规则自身就是用正则表达式表述的。这为规则的定义和对SRX的遵守保留了最大的灵活性。

#### 正则表达式构造的简要介绍

这些不是你在OmegaT中能够使用的唯一结构，但却是最常用的。OmegaT 支持 SRX 标准中描述的所有正则表达式特性。

构造 | 匹配
--- | ---
标志
`(?i)` | 激活大小写不敏感匹配（缺省模式为大小写敏感）
字符
x | 字符 x, 除了以下内容……
`\u` hhhh | 以十六进制数值表示的字符`0x` hhhh
`\t` | 制表符 (`'\u0009'`)
`\n` | 新行 (换行) 字符 (`'\u000A'`)
`\r` | 回车字符(`'\u000D'`)
引用
`\` | 什么都不是，但对以下字符进行引用。当你需要对 `!$()*+.<>?[\]^{|}` 进行匹配时需要使用它。
`\\` | 这是反斜杠字符
`\Q` | 什么都没有，但是引用 `\E`之前的所有字符
`\E` | 什么都没有，但是结束由 `\Q`开始的引用
字符分类
`[abc]` | `a`, `b`或者 `c` (简单分类)
`[^abc]` | 除了 `a`, `b`, or `c` (否定)之外的任何字符。
`[a-zA-Z]` | `a` 到 `z` 并且 `A` 到 `Z`, 包含（范围）
预定义字符类
`.` | 任何字符 （除了行结束符之外）
`\d` | 单个数字： `[0-9]`
`\D` | 一个非数字字符： `[^0-9]`
`\s` | 一个空白字符： `[ \t\n\x0B\f\r]`
`\S` | 一个非空白字符： `[^\s]`
`\w` | 一个单词字符： `[a-zA-Z_0-9]`
`\W` | 一个非单词字符： `[^\w]`
边界匹配
`^` | 行开始
`$` | 行结束
`\b` | 单词边界
`\B` | 非单词边界
贪婪量词
这些符号将可能进行匹配。例如，`a+` 将会匹配`aaabbb`中的`aaa`
X`?` | X一次或根本不出现
X`*` | X出现0次或多次
X`+` | X出现1次以上
勉强 (非贪婪) 量词
这些字符将会尽可能少地进行匹配。例如： `a+?` 将会匹配`aaabbb`中的 `a`
X`??` | X一次或根本不出现
X`*?` | X出现0次或多次
X`+?` | X出现1次以上
逻辑操作符
XY | X 后面紧跟一个Y
X`|`Y | X 或 Y
`(`XY`)` | XY 作为单个组出现

法律注意事项