# 検索

## 目次

- 1. 検索ウィンドウ
- 2. 検索位置
- 3. 検索方法
  - 3.1. 完全一致検索
  - 3.2. キーワード検索
- 4. ワイルドカードを使った検索
- 5. 正規表現を使った検索
  - 5.1. 検索で使う正規表現
  - 5.2. 正規表現構造の短い要約

## 検索ウィンドウ

OmegaT は強力な検索機能を提供します。

`Ctrl+F`を押して検索ウィンドウを呼び出し、「検索文字列」テキストボックスに検索したい単語やフレーズを入力して下さい。

あるいは、編集フィールド(注目している分節の訳文)の単語又はフレーズを選択して、`Ctrl+F`を押して下さい。この場合、「検索文字列」テキストボックスに単語又はフレーズが自動的に入力されます。

検索ウィンドウの呼び出し時はいつも新しいウィンドウを作成します。これらを閉じるのを忘れたときは、検索ウィンドウが複数開くことになります。

検索は、原文、訳文の両方に対して行なわれます。

## 検索位置

チェックボックスを使って位置を選択します。

検索する場所を選択できます:

- このプロジェクトのみ(デフォルトの設定)
- プロジェクトに加えて/tm/にある翻訳メモリも検索する(参考翻訳メモリ検索にチェック)
- 単一のファイルまたは、複数のファイルを含むフォルダ(ファイル検索にチェック)

後者の場合、OmegaT は読み込み可能なファイルだけを検索します(対応するファイル形式を参照してください)。

## 検索方法

ラジオボタンを使って方法を選択します。

二つの検索方法から選ぶことができます:

- 完全一致検索: 指定した文字列を含む分節を検索します。
- キーワード検索: 指定した全てのキーワードを任意の順序で含む分節を検索します。

二つの方法のどちらかを選ぶと、以下の三つのオプションを選ぶことができます:

- 大文字と小文字を区別します: 選択すると、指定された文字列と正確に同じものを検索します; そうでなければ大文字と小文字の違いは無視します。
- 正規表現: 選択すると、検索文字列を正規表現として扱います(キーワード検索の場合は複数の表現として扱います)。
- 参考翻訳メモリ検索: 選択すると、全ての翻訳メモリも検索されます。

## 完全一致検索

完全一致検索はフレーズを検索します; 複数の単語が入力された場合は、それらが完全に同じ順番で出てくる場合のみを検索します。完全一致検索は Google のようなインターネット検索エンジンの「フレーズを含む」検索と似ています。

## キーワード検索

「キーワード検索」を選択して、任意の数の単語をスペースで区切って任意の順番で入力すると、OmegaT は全ての単語が存在する全ての分節のリストを表示します。キーワード検索は Google のようなインターネット検索エンジンでの「全てのキーワードを含む」と同じようなものです(AND ロジック)。

## ワイルドカードを使った検索

完全一致検索とキーワード検索の両方で、ワイルドカード検索文字 '`*`' と '`?`' が使えます。ワイルドカードを使うには、正規表現が選択されていないことを確認してください;さもないと正規表現の特別な文字として扱われます。

ワイルドカード文字'`?`'は一つの文字にマッチングします;例えば、'`b?d`'は'`bad`' と '`bid`' にマッチングします。ワイルドカード文字 '`*`' は任意の数の文字とマッチングします; 例えば、 '`b*d`' は '`bad`', '`bid`', '`bold`' , '`band`' にマッチングします。

このような文字を含む分節を検索したい場合、正規表現を有効にして、それらの文字を逆スラッシュ('`\`')を使ってエスケープする必要があります;例えば'`x*y`' を検索したいときは'`x\*y`', `x?y` を検索したいときは '`x\?y`' とします。

## 正規表現を使った検索

正規表現検索は文字列を検索するための強力な方法です。これは通常の検索に似ていますが、遥かに柔軟性があります。web 上で単純なチュートリアルを見つけることができます(例えば: 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 | 16 進数 `0x` hhhhの値を持つ文字
`\t` | タブ文字(`'\u0009'`)
`\n` | 改行文字(`'\u000A'`)
`\r` | 復帰文字(`'\u000D'`)
クォート
`\` | どの文字も表しませんが、次の文字をクォートします。これはメタキャラクタ`!$()*+.<>?[\]^{|}`を、その文字そのものとマッチングさせたいときに必要です。
`\\` | 例えば、これはバックスラッシュ文字です。
`\Q` | どの文字も表しませんが、`\E`までの全ての文字をクォートします。
`\E` | どの文字も表しませんが、`\Q`から続くクォートを終了させます。
文字クラス
`[abc]` | `a`, `b`, `c`のいずれか (単純クラス)
`[^abc]` | `a`, `b`, `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`?` | 0個か1個のX
X`*` | 0個以上のX
X`+` | 1個以上のX
無欲量指定子
これらはできるだけ少しの文字とマッチングします。例えば、`a+?` は`aaabbb`の中の最初の`a`とマッチングします。
X`??` | 0個か1個のX
X`*?` | 0個以上のX
X`+?` | 1個以上のX
論理演算子
XY | Xに引き続いてY
X`|`Y | XかYのどちらか
`(`XY`)` | XYを一つのグループとする

特記事項