# 搜索

## 内容

- 1. 搜索窗口
- 2. 搜索位置
- 3. 搜索方法
  - 3.1. 精确搜索
  - 3.2. 关键词搜索
- 4. 使用通配符搜索
- 5. 使用正则表达式搜索
  - 5.1. 搜索使用的正则表达式
  - 5.2. 正则表达式快捷概要

## 搜索窗口

OmegaT 提供了强大的搜索功能

使用 `Ctrl+F` 调出搜索窗口，在“查找”文本框输入你要搜索的单词或短语。

此外，在编辑区域（激活片段的目标文本）选择一个单词或短语，然后按`Ctrl+F`键。在这种情况下，单词或者短语将会自动输入“查找”文本框中。

调出搜索窗口总是会创建它的一个新实例。如果你忘记关闭它们的话，最后你可能打开了数个搜索窗口。

搜索在项目的源和目标文件中同时进行。

## 搜索位置

使用检查框选择位置。

你可以为要进行的搜索选择多个位置：

- 只在项目中（缺省设置）
- 在项目和/tm/中的参考翻译记忆中（勾上Search TMs）
- 单独的文件或包含一系列文件的文件夹（勾上 Search files选项）

在后面的情形中，OmegaT至搜索它能够读取的文件（查阅Supported File Formats）。

## 搜索方法

使用无线按钮选择方法

你可以在两个方法之中选择其一：

- 精确搜索：找出包括你指定字符串的片段。
- 关键词搜索：找出所有包括你指定的关键字的片段，不考虑顺序。

对于以上两种方法，你可以选择下列三个选择：

- 大小写敏感：如果选上该选项，搜索工作将会严格匹配指定的字符串；否则大小写状态将会被忽略。
- 正则表达式：如果选上该选项，搜索字符串将会被当作正则表达式对待（在关键词搜索中，它会被当作多个表达式）。
- 搜索 TMs: 如果选上该选项，所有的翻译记忆都被包括在搜索路径中。

## 精确搜索

精确搜索查找短语，例如如果输入了多个词汇，只有当它们的顺序也完全相同时才会找到它们。精确搜索和互联网上类似Google的搜索引擎的“精确词语”搜索相似。

## 关键词搜索

选择“关键词搜索”输入数个单词，用空格以任何顺序分隔，OmegaT鉴定会显示所有词都出现的片段列表。关键词搜索和互联网Google搜索引擎的 “使用所有词”方式相似（AND逻辑）。

## 使用通配符搜索

无论是精确还是关键词搜索，都可以使用通配符 '`*`' 和 '`?`' 。要使用通配符，必须确保选项 正则表达式 没有被选中，否则这些字符将会被识别为特殊的正则表达式字符。

通配符 '`?`' 匹配任何单个的字符，如： '`b?d`' 将会找到实例： '`bad`' 和 '`bid`'。通配符 '`*`' 匹配任何数量的字符，例如 '`b*d`' 将会找到实例： '`bad`', '`bid`', '`bold`' 和 '`band`'.

如果你希望查找包括这些字符的片段，你需要使用正则表达式进行转换，你需要使用一个反斜杠('`\`') 对它们进行转义。例如： '`x\*y`' 用来查找实例'`x*y`' ； '`x\?y`' 用来查找实例 '`x?y`'。

## 使用正则表达式搜索

正则表达式是一种查找字符串实例的强大方法。它和普通搜索类似，但具有大得多的灵活性。你可以在网站(http://www.regular-expressions.info/quickstart.html找到一份简单的入门指南。)

### 搜索中使用的正则表达式

在搜索中使用的正则表达式是Java所支持的哪些。如果你需要更多的信息，请参阅 http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html。

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

构造 | 匹配
--- | ---
标志
`(?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 作为单个组出现

法律注意事项