AOO 3.4/LO 4.0 の正規表現

Apache OpenOffice 3.4 では正規表現エンジンがライセンスの都合で ICU Regular Expressions [1] (バージョン 4.0.1) に変更されます。
追記: LibreOffice 4.0 でも正規表現エンジンが ICU Regular Expressions のものになりました。

正規表現は実装によりメタ文字や、マッチ結果が違うことがあります。以下は OpenOffice.org のヘルプまたは ICU の説明 [1] から抜粋したものです。

正規表現メタ文字

記号 説明
\a BELL 文字、\u0007 にマッチします。
\A 入力の開始位置にマッチします。^ と違い、\A は入力後の行開始にマッチしません。
\b (セット外) 単語の境界にマッチします。境界は \w から \W 文字に変わるときに現れ、連続指定は無視されます。詳細は ICU Boundary Analysis [2] を参照。
\b (セット内) BACKSPACE、\u0008 にマッチします。
\B 現在の位置が単語の間でないときにマッチします。
\cX Control-X 文字にマッチします。
\d ユニコード Nd (数値、10 進数) [2] の全ての文字にマッチします。
\D \d を除く全ての文字にマッチします。
\e ESCAPE 文字、\u001B にマッチします。
\E \Q ... \E によるエスケープを終了させます。
\f FORM FEED、\u000C にマッチします。
\G 直前のマッチの終端位置にマッチします。
\n LINE FEED、\u000A にマッチします。
\N{ユニコード
文字名}
名前を指定した文字にマッチします。
\p{ユニコード
プロパティ名}
ユニコードプロパティで指定した文字にマッチします。
\P{ユニコード
プロパティ名}
ユニコードプロパティで指定した文字を除いた文字にマッチします。
\Q \Q ... \E で文字をエスケープします。
\r CARRIAGE RETURN、\u000D にマッチします。
\s 空白文字にマッチします。[\t\n\f\r\p{Z}] と定義されています。
\S 非空白文字にマッチします。
\t HORIZONTAL TABULATION、\u0009 にマッチします。
\uhhhh 十六進数 hhhh で表される文字にマッチします。
\Uhhhhhhhh 十六進数 hhhhhhhh で表される文字にマッチします。\U0010ffff のような場合でも、八桁の十六進数を指定してください。
\w 文字にマッチします。[\p{Alphabetic}\p{Mark}\p{Decimal_Number}\p{Connector_Punctuation}\u200c\u200d] と定義されています。
\W \w を除いた文字にマッチします。
\x{hhhh} 十六進数 hhhh の文字にマッチします。1-6 桁の十六進数文字が指定できます。
\xhh 二桁の十六進数 hh の文字にマッチします。
\X Grapheme Cluster [4] にマッチします。
\Z 入力の終端位置にマッチします。最後に行端文字がある場合はその直前にマッチします。
\z 入力の終端位置にマッチします。
\n 後方参照。n 番目にマッチしたグループにマッチします。n は 1 < n < グループ数でなければいけません。n には数値を指定します。
\0ooo 八進数で指定した文字にマッチします。'ooo' は 1-3 桁の八進数文字で 0377 が最大値になります。最初のゼロは後方参照と区別するために省略不可です。
[パターン] パターンのうちのどれか一文字にマッチします。パターンに指定可能な文字については Unicode Set [5] 参照。
. 全ての一文字にマッチします。
^ 行頭にマッチします。
$ 行末にマッチします。
\ 次の文字をエスケープします。* ? + [ ( ) { } ^ $ | \ は文字として取り扱われるようにするにはエスケープしなければいけません。

正規表現記号

記号 説明
| 選択。A|B は A または B にマッチします。
* 0 回以上の繰り返しにマッチします。最長マッチ。
+ 1 回以上の繰り返しにマッチします。最長マッチ。
? 0 回または 1 回の繰り返しにマッチします。1 回の繰り返しが優先されます。
{n} n 回の繰り返しにマッチします。
{n,} n 回以上の繰り返しにマッチします。最長マッチ。
{n,m} n 回以上、m 回以下の繰り返しにマッチします。最長マッチを試みますが、m 回を超えません。
*? 0 回以上の繰り返しにマッチします。最短マッチ。
+? 1 回以上の繰り返しにマッチします。最短マッチ。
?? 0 回または 1 回の繰り返しにマッチします。0 回の繰り返しが優先されます。
{n}? n 回の繰り返しにマッチします。
{n,}? n 回以上の繰り返しにマッチします。最短マッチ。
{n,m}? n 回以上、m 回以下の繰り返しにマッチします。最短マッチ。
*+ 0 回以上の繰り返しにマッチします。最初にマッチしたときにできるだけ長くマッチしようとしますが、全体がマッチしなくても再度マッチを行いません (独占的マッチ)。
++ 1 回以上の繰り返しにマッチします。独占的マッチ。
?+ 0 回以上の繰り返しにマッチします。独占的マッチ。
{n}+ n 回の繰り返しにマッチします。
{n,}+ n 回以上の繰り返しにマッチします。独占的マッチ。
{n,m}+ n 回以上、m 回以下の繰り返しにマッチします。独占的マッチ。
( ... ) 捕捉のためのカッコ。カッコ内のサブパターンはマッチ後に後方参照できます。
(?: ...) 非捕捉のためのカッコ。パターンをグループ化しますが、マッチしても後方参照が生成されません。捕捉のカッコよりも多少効率が良い。
(?> ...) アトミックマッチのためのカッコ。カッコ内のサブパターンが一度だけマッチ判定されます。
(?# ...) コメント。(?# コメント)
(?= ...) 先読み。現在の位置でカッコ内のパターンがマッチしたときに真です。入力位置を進めません。
(?! ...) 否定先読み。現在の位置でカッコ内のパターンがマッチしなかったときに真です。入力位置を進めません。
(?<= ...) 戻り読み。カッコ内のパターンが現在の位置のテキストの直前にマッチするとき真。入力位置を変更しません。戻り読みパターンでマッチ可能な文字列長は無制限ではいけません (* または + を指定できません)。
(?<! ...) 否定戻り読み。カッコ内のパターンが現在の位置のテキストの直前にマッチしないとき真。入力位置を変更しません。戻り読みパターンでマッチ可能な文字列長は無制限ではいけません (* または + を指定できません)。
(?ismwx-ismwx: ...) フラグを設定します。カッコ内のパターンを指定したフラグで評価します。有効化、もしくは - で無効化します。
(?ismwx-ismwx) フラグを設定します。フラグ設定を変更します。設定以降の部分に変更が適用されます。たとえば、(?i) では大文字と小文字を区別したマッチに変更します。