OmegaT 4.2 - 取扱説明書

付録D 正規表現

文字列検索と分節化規則で使用する正規表現は、Java がサポートしているものです。より詳細な情報については Java の正規表現に関する技術文書を参照してください。以下の構文一覧と使用例も参照してください。

注記

この章は上級者のユーザーを対象にしています。独自の分節化規則を定義したり、こみいった条件での検索を必要とする場合に、参照してください。

表D.1 正規表現 - フラグ
構文 一致対象
(?i) 大文字と小文字を区別しない一致を有効にします(デフォルトでは大文字と小文字を区別します)

表D.2 正規表現 - 文字
構文 一致対象
x 文字 x(以下に示すもの以外)
\uhhhh 16 進値 0xhhhh を持つ文字
\t タブ文字('\u0009')
\n 改行(ラインフィード、LF)文字('\u000A')
\r キャリッジリターン(CR)文字('\u000D')
\f 用紙送り文字('\u000C')
\a 警告 (ベル) 文字('\u0007')
\e エスケープ文字('\u001B')
\cx x に対応する制御文字
\0n 8 進値 0n を持つ文字(0 <= n <= 7)
\0nn 8 進値 0nn を持つ文字(0 <= n <= 7)
\0mnn 8 進値 0mnn を持つ文字(0 <= m <= 3、0 <= n <= 7)
\xhh 16 進値 0xhh を持つ文字

表D.3 正規表現 - 引用
構文 一致対象
\ 次の文字をエスケープします。以下のメタ文字(!$()*+.<>?[\]^{|})自体を一致対象としたい場合に入力が必要です
\\ たとえば、この構文ではバックスラッシュ文字を表します
\Q \E までのすべての文字をエスケープします
\E \Q で開始された引用をエスケープします

表D.4 正規表現 - Unicode ブロックとカテゴリのクラス
構文 一致対象
\p{InGreek} ギリシャ語ブロックの文字(単純 ブロック
\p{Lu} 大文字(単純 カテゴリ
\p{Sc} 通貨記号
\P{InGreek} ギリシャ語ブロック以外の文字(否定)
[\p{L}&&[^\p{Lu}]] 大文字以外の文字(減算)

表D.5 正規表現 - 文字クラス
構文 一致対象
[abc] a、b または c(単純クラス)
[^abc] a、b、c 以外の文字(否定)
[a-zA-Z] a 〜 z または A から Z(範囲)

表D.6 正規表現 - 定義済みの文字クラス
構文 一致対象
  任意の文字(行末記号を除く)
\d 数字:[0-9]
\D 数字以外:[^0-9]
\s 空白文字:[ \t\n\x0B\f\r]
\S 非空白文字:[^\s]
\w 単語構成文字:[a-zA-Z_0-9]
\W 非単語文字:[^\w]

表D.7 正規表現 - 境界正規表現エンジン
構文 一致対象
^ 行の先頭
$ 行の末尾
\b 単語境界
\B 非単語境界

表D.8 正規表現 - 最長一致数量子
構文 一致対象
X ? X、1 または 0 回
X * X、0 回以上
X + X、1 回以上

注記

最長一致数量子は、指定した文字となるべく多い文字数で一致します。たとえば a+ は文字列 aaabbb にあるaaaと一致します。

表D.9 正規表現 - 最短一致数量子
構文 一致対象
X?? X、1 または 0 回
X*? X、0 回以上
X+? X、1 回以上

注記

最短一致数量子は、指定した文字となるべく少ない文字数で一致します。たとえば a+? は文字列 aaabbb にある最初の a と一致します。

表D.10 正規表現 - 論理演算子
構文 一致対象
XY X の直後に Y
X|Y X または Y
(XY) XY を 1 つのグループとして扱います

正規表現関連ツールとその使用例

正規表現の作成やテストを行える対話式のツールは、たくさんあります。それらのツールは、たいてい同じ使い方ができます(実例は、下の Regular Expression Tester を参照してください)。入力した正規表現(図では最上段の「Regular Expression」)にしたがって対象テキスト(中段の「Search Text」)を検索し、その結果(下段の「Result」)を表示します。

図D.1 Regex Tester
Regex Tester

Windows、Linux、FreeBSD 向けの単体ツールを探しているなら、The Regex Coach を確認してみてください。このツールは、上の例(Firefox アドオン)とほとんど同じように使えます。

正規表現の便利な構文例は、OmegaT 自体にも含まれています([設定]→[分節化規則...]を参照してください)。以下は、特に翻訳メモリを検索する場合に便利な正規表現の一覧です:

表D.11 正規表現 - 翻訳で使える正規表現例
正規表現 検索対象
(\b\w+\b)\s\1\b 重複している単語
[\.,]\s*[\.,]+ カンマまたはピリオドの後ろに、0個以上のスペースが続いて、再びカンマまたはピリオド
\. \s+$ 行末で、ピリオドの後ろに余分なスペースがある箇所
\s+a\s+[aeiou] 英語:母音で始まる単語の前に「an」でなく「a」がある箇所
\s+an\s+[^aeiou] 英語:子音で始まる単語の前に「a」でなく「an」がある箇所
\s{2,} 2 個以上の空白
\.[A-Z] ピリオドの直後に大文字が続く箇所 - 新しい文章の前の空白が欠落している可能性あり?
\bis\b 「is」を検索(「this」や「isn't」などに一致させない)