IBM Tivoli Composite Application Manager for Applications バージョン 7.2.1

ICU の正規表現

プログラミング言語が異なると、正規表現を実装する方法も多少異なるため、この情報は、Oracle Database Extended エージェントの正規表現機能を使用する場合に不可欠です。

表 1 および表 2 の情報は「ICU User Guide」からの抜粋です。これらの表では、ICU 正規表現の実装の詳細について説明します。

表 1. 正規表現のメタキャラクター
文字 説明
¥a ベル文字、¥u0007 にマッチします。
¥A 入力の先頭にマッチします。¥A は、入力内の改行の後にはマッチしない点で、^ と異なります。
¥b ([Set] の外側) 現在位置がワード境界の場合にマッチします。 境界は、単語文字 (¥w) と非単語文字 (¥W) の間の移行部で発生し、結合文字は無視されます。 ワード境界について詳しくは、「ICU Boundary Analysis」を参照してください。
¥b ([Set] の内側) バックスペース文字、¥u0008 にマッチします。
¥B 現在位置がワード境界ではない場合にマッチします。
¥cX CTRL-X 文字にマッチします。
¥d Unicode 一般カテゴリーが Nd (数字、10 進数字) である任意の文字にマッチします。
¥D 10 進数字ではない任意の文字にマッチします。
¥e エスケープ文字、¥u001B にマッチします。
¥E ¥Q ... ¥E の引用符で囲まれたシーケンスを終了します。
¥f 用紙送り、¥u000C にマッチします。
¥G 現在位置が前回のマッチの終わりである場合にマッチします。
¥n 改行、¥u000A にマッチします。
¥N{UNICODE CHARACTER NAME} 名前付き文字にマッチします。
¥p{UNICODE PROPERTY NAME} 指定された Unicode プロパティーを持つ任意の文字にマッチします。
¥P{UNICODE PROPERTY NAME} 指定された Unicode プロパティーを持たない任意の文字にマッチします。
¥Q ¥E までの後続のすべての文字を引用符で囲みます。
¥r 復帰、¥u000D にマッチします。
¥s 空白文字にマッチします。空白文字は、[¥t¥n¥f¥r¥p{Z}] として定義されます。
¥S 非空白文字にマッチします。
¥t 水平タブ、¥u0009 にマッチします。
¥uhhhh 16 進値が hhhh である文字にマッチします。
¥Uhhhhhhhh 16 進値が hhhhhhhh である文字にマッチします。 最大 Unicode コード・ポイントが ¥U0010ffff である場合でも、正確に 8 桁の 16 進数字を指定する必要があります。
¥w 単語文字にマッチします。単語文字は、[¥p{Ll}¥p{Lu}¥p{Lt}¥p{Lo}¥p{Nd}] です。
¥W 非単語文字にマッチします。
¥x{hhhh} 16 進値が hhhh である文字にマッチします。 1 から 6 桁の 16 進数値を指定できます。
¥xhh 2 桁の 16 進値が hh である文字にマッチします。
¥X 書記素クラスターにマッチします。
¥Z ¥ 現在位置が入力の終わりであるが、最後の行終了文字 (存在する場合) の前である場合にマッチします。
¥z 現在位置が入力の終わりである場合にマッチします。
¥n 後方参照。n 番目のキャプチャー・グループがマッチするたびにマッチします。 n は 1 より大きく、かつパターン内のキャプチャー・グループの総数より小さい数でなければなりません。
重要: ¥012 などの 8 進数エスケープは、ICU の正規表現ではサポートされていません。
[pattern] セットからの任意の 1 文字にマッチします。パターンに入れることのできる文字について詳しくは、「UnicodeSet」を参照してください。
. 任意の文字にマッチします。
^ 行の先頭にマッチします。
$ 行の終わりにマッチします。
¥ 後続の文字を引用符で囲みます。リテラルとして扱うために引用符で囲む必要がある文字は、* ? + [ ( ) { } ^ $ | ¥ . / です。
表 2. 正規表現の演算子
演算子 説明
| 代替。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 回までマッチします。できる限り少ない回数のマッチが行われますが、n 回より少ないことはありません。
*+ 0 回以上、マッチします。1 つ目の検出時にできる限り多くの回数のマッチを行い、全体としてのマッチに失敗してもマッチ回数が少なくなる再試行は行われません (強欲なマッチ)。
++ 1 回以上、マッチします。強欲なマッチです。
?+ 0 回または 1 回、マッチします。強欲なマッチです。
{n}+ 正確に n 回、マッチします。強欲なマッチです。
{n,}+ 少なくとも n 回、マッチします。強欲なマッチです。
{n,m}+ n 回から m 回までマッチします。強欲なマッチです。
( ... ) キャプチャー括弧。括弧で囲まれた副次式にマッチした入力の範囲が、マッチ後に使用可能になります。
(?: ... ) 非キャプチャー括弧。含まれるパターンをグループ化しますが、マッチするテキストのキャプチャーは行われません。 キャプチャー括弧よりも効率が良くなります。
(?> ... ) アトミック・マッチ括弧。括弧で囲まれた副次式の 1 つ目のマッチが、試行される唯一のマッチです。それによりパターン全体のマッチが発生しない場合は、「(?>」の前の位置にマッチの検索をバックアップします。
(?# ... ) フリー形式のコメント (?# コメント)。
(?= ... ) 先読みアサーション。括弧で囲まれたパターンが現在の入力位置にマッチする場合に真ですが、入力位置を前に移動しません。
(?! ... ) 負の先読みアサーション。括弧で囲まれたパターンが現在の入力位置にマッチしない場合に真です。 入力位置を前に移動しません。
(?<= ... ) 後読みアサーション。括弧で囲まれたパターンが現在の入力位置より前のテキストにマッチし、マッチの最後の文字が現在位置の直前の入力文字である場合に真です。 入力位置を変更しません。後読みパターンがマッチする有効なストリングの長さは、無制限であってはなりません (* 演算子も + 演算子もないこと)。
(?<!...) 負の後読みアサーション。括弧で囲まれたパターンが現在の入力位置より前のテキストにマッチせず、マッチの最後の文字が現在位置の直前の入力文字である場合に真です。 入力位置を変更しません。後読みパターンがマッチする有効なストリングの長さは、無制限であってはなりません (* 演算子も + 演算子もないこと)。
(?ismx-ismx: ... ) フラグの設定。指定されたフラグの有効化または無効化によって、括弧で囲んだ式を評価します。
(?ismx-ismx) フラグの設定。フラグの設定を変更します。変更は、設定の後ろのパターンの一部分に適用されます。 例えば、(?i) は、大/小文字を区別しないマッチに変更します。


フィードバック