TR1 の正規表現
このトピックでは正規表現エンジンの文法はTR1 サポートについて説明します。
このトピックの内容
正規表現のリファレンス
文法概要
意味の詳細
検索と発見
書式指定フラグ
正規表現のリファレンス
要素
要素は次の処理の 1 つがです :
ターゲット シーケンスの同じ文字と一致する 通常の文字 。
ワイルドカード文字 " 」 また改行を除くターゲット シーケンスの文字と一致します。
文字または設定するとターゲット シーケンスの照合順序の要素が expr 式と一致させるかまたはをに設定するとターゲット シーケンスの文字と照合順序の要素に対応するフォームの 角かっこ表現は 「 expr 式によって expr[^] 」で定義した定義されたフォームの 「 [] 」 expr。
式 expr は次の操作を任意に組み合わせて指定できます :
個々の文字。expr で定義された文字セットに追加します。
フォーム ch1ch2 「 - 」の 文字範囲 。expr で定義されている設定に閉じた範囲 [入力]ch1ch2 の値によって表される文字を追加します。
フォームの 文字クラス 「 : [: 」 name 入力] expr で定義されているクラスの名前付きセットに文字を追加します。
フォームの 等価クラス 「 [] 」 =elt=。expr で定義されている設定に elt と同じ照合要素を追加します。
フォームの 照合のシンボル 「 [。elt。] 」)。expr で定義されている照合順序の設定に elt 要素を追加します。
アンカー 。「 ^ 」で一致がターゲット シーケンスの先頭固定します。; 「 $ 」の一致をターゲット シーケンスの末尾固定します。
区切り記号の間のパターンに一致するターゲット シーケンスの文字シーケンスに一致するフォームのキャプチャ グループ (「 部分式 ) 」または BRE と grep の 部分式 (「 \ \ 」)。
- ターゲット シーケンスの文字 k に一致するフォームの 「 \ 」 k 単一 の 文字エスケープ 。
次に例を示します。
「 a 」はターゲット シーケンス 「 a 」と一致しますがターゲットに配置する 12 「 D 」「 b 」「 c 」とは一致しません。
「」 すべてのターゲットに配置する 「 a 」「 12 D 」「 b 」「 c 」と一致します。
「 [] 」と一致します b-z ターゲットに配置します。「 b 」「 c 」を一致しないターゲットに配置する 「 a 」または 「 12 C 」を参照してください。
「 [: 下]: 」ターゲットに配置します。「 a 」「 b 」「 c 」が一致しないターゲット シーケンス 「 12 C 」に一致します。
「 () 」はターゲット シーケンス 「 a 」と一致しサブシーケンス 「 a 」と 1 番を関連付けましたりターゲットに配置する 12 「 D 」「 b 」「 c 」とは一致しません。
ECMAScriptBRE と grep にはddn 番目のキャプチャ グループと一致する文字のシーケンスと同じであるターゲット シーケンスの文字シーケンスに対応する 10 進値を表します。N にフォームの 「 \dd 」 前方参照 になります。たとえば最初のキャプチャ グループ (のみ)最初のシーケンス 「 a 」と一致すると1 \ 一致する最終的なシーケンス 「 a 」と一致し()「 \ 1 " はターゲット シーケンス 「 aa 」です。
ECMAScript には次の項目の 1 つです :
フォーム の非キャプチャ グループ (または 「 :。 部分式 」)。区切り記号の間のパターンに一致するターゲット シーケンスの文字を検索します。
フォームの 「 \ f 」 エスケープ された 形式 (「 \ n 」または 「 \ r 」「 \ t 」または 「 \ v 」。これらはターゲット シーケンスのフォーム フィード文字 (改行復帰水平タブと垂直タブにそれぞれ一致します。
フォーム は正 の (または 「 アサートします 。= 」) 部分式 。区切り記号の間のパターンに一致する一致しますがターゲット シーケンスの一致の位置を変更しません。ターゲット シーケンスの文字シーケンスにします。
負 フォームの 「 アサートされます (!。 部分式 」)。区切り記号がパターンに一致しない一致しターゲット シーケンスの一致の位置を変更しません。ターゲット シーケンスの文字シーケンスにします。
フォームの 「 \ xhh 」 16 進数のエスケープ シーケンス 。2 個の 16 hh16 進数によって表されるターゲット シーケンスの文字と一致します。
フォームの 「 \ u 」 hhhh の Unicode エスケープ シーケンス 。4 個の 16 hhhh16 進数によって表されるターゲット シーケンスの文字と一致します。
フォームの 「 \ c 」の 制御 k エスケープ シーケンス 。文字 k によって指定される制御文字を検索します。
ワード境界とは フォームの 「 \ b 」 アサートします 。ターゲット シーケンスの現在位置は ワード境界 の直後である場合に一致します。
否定的なワード境界とは フォームの 「 \ 12 C 」 アサートします 。ターゲット シーケンスの現在位置は ワード境界 の直後にない場合に一致します。
フォームの 「 \ d 」 dsw エスケープ文字 (「 \ 17 D 」「 \ \ s 」「 S 」「 \ \ w 」「 W 」。文字クラスに短い名前を指定します。
次に例を示します。
(「 : か。は) 」はターゲット シーケンス 「 a 」と一致します。(または 「 : 1.)キャプチャ グループがないため\ 1 " が無効です。
「 (か。=a) 」はターゲット シーケンス 「 a 」に一致します。正数で一致が正規表現のターゲット シーケンスと最終 「 a 」の最初のシーケンス 「 a 」ターゲット シーケンスの最初のシーケンス 「 a 」アサートします。
「 ! (または。」) はターゲット シーケンス 「 a 」には一致しません。
「 a b \. 」はターゲット シーケンス 「 a~ 」に一致しますがターゲット シーケンス 「 ab 」とは一致しません。
\ B 「 . 」はターゲット シーケンス 「 ab 」に一致しますがターゲット シーケンス 「 a~ 」とは一致しません。
awk には次の項目の 1 つです :
フォームの 形式エスケープ 「 \ \ 」」\ 「 \ b 」「 \ f 」または 「 \ n 」または 「 \ r 」「 \ t 」または 「 \ v 」。これらはバックスに一致しますラッシュターゲット シーケンスのフォーム フィード文字 (改行復帰水平および垂直タブタブ通知バックスペースします。
フォームの 「 \ 」 ooo8 進数のエスケープ シーケンス 。表現が 1 ビット2 ビットまたは 3 ビットの 8 桁 ooo によって表される値であるターゲット シーケンスの文字と一致します。
繰り返し
正 以外の要素が アサート されます がアサートされます が アンカーは 繰り返しの回数を指定することができます。繰り返しの数の最も一般的な種類は「 {} 」 minmaxまたは BRE と grep の 「 minmax\ \ {} 」になります。このフォームの数の繰り返しに一致する min 少なくとも一つの連続した後に続くと要素に対応するシーケンスの max の連続するには要素。たとえば「 {2,3} 」はターゲット シーケンス 「 aa 」とターゲット シーケンス 「 aaa 」ターゲット シーケンス 「 a 」またはターゲット シーケンス 「 aaaa 」と一致します。
繰り返しの数は次に 1 を指定できます :
「 {} 」 minまたは BRE と grep の 「 \ \ {} 」 min。これに 「 {} 」 minmin。
「 {} 」 minまたは BRE と grep の 「 min の \ \ {} 」)。これに 「 {} 」 min無限。
"これに 「 {0} 」は無限。
次に例を示します。
「 {2} 」はターゲット シーケンス 「 aa 」ターゲット シーケンス 「 a 」またはターゲット シーケンス 「 aaa 」と一致します。
「 {2} 」はターゲット シーケンス 「 aa 」はターゲット シーケンス 「 aaa 」などと一致しますがターゲット シーケンス 「 a 」と一致しません。
「 a* 」はターゲット シーケンス ""ターゲット シーケンス 「 a 」はターゲット シーケンス 「 aa 」などと一致します。
BRE と grep を除くすべての文法では繰り返しの数は次に 1 を指定できます :
「または」。これに 「 {0,1} 」です。
「 + 」。これに 「 {1} 」は無限。
次に例を示します。
「または」 ターゲット シーケンス "" およびターゲット シーケンス 「 a 」ターゲット シーケンス 「 aa 」と一致します。
「 a+ 」はターゲット シーケンス 「 a 」はターゲット シーケンス 「 aa 」などターゲット シーケンス "" 一致します。
ECMAScript では繰り返しの回数のすべてのフォームは文字 「に配置できますか。」最短一致の 繰り返しを 指定できます。
連結
繰り返し の有無に関係なく正規表現の要素は長い正規表現を作成するに 数えましたり 連結できます。結果の式は個々の要素と一致したシーケンスの連結であるターゲットを検索します。たとえば「 a b " {2,3} 」はターゲット シーケンス 「」 aabターゲット シーケンス 「 aaab 」に一致しますがターゲット シーケンス 「 ab 」またはターゲット シーケンス 「 aaaab 」とは一致しません。
代替
BRE と grep を除くすべての正規表現文法では結合された正規表現は文字 " 続けることができます。| 」と別の連結された正規表現。連結された正規表現の数がこのように組み合わせることができます。結果の式は連結された正規表現の一つ以上に合わせてターゲットを検索します。
連結された正規表現の 1 つ以上のターゲット シーケンスと一致する場合ECMAScript は一致 ( 最初の一致 ) として連結シーケンスを照合する正規表現の最初の日を選択します ; 他の文法正規表現は 最長一致を 行う 1 を選択します。たとえば「 ab|CD 」はターゲット シーケンス 「 ab 」とターゲット シーケンス 「 CD 」に一致しますがターゲット シーケンス 「」または abd ターゲット シーケンス 「に acd 」とは一致しません。
grep と egrep で置換を区切るには改行文字 (" \ n ") を使用できます。
部分式
BRE と grep では部分式は連結したものです。他の正規表現文法では部分式は別です。
文法概要
次の表はTR1 に用意されているさまざまな文法正規表現で使用できる機能をまとめたものです :
要素 |
BRE |
ERE |
ECMA |
grep |
egrep |
awk |
---|---|---|---|---|---|---|
置換を使用して 「 | 」 |
+ |
+ |
+ |
+ |
||
「 \ n を使用して代替 |
+ |
+ |
||||
アンカー |
+ |
+ |
+ |
+ |
+ |
+ |
前方参照 |
+ |
+ |
+ |
|||
角かっこ表現 |
+ |
+ |
+ |
+ |
+ |
+ |
「使用している場合 (」) |
+ |
+ |
+ |
+ |
||
「 \ \ 」) (使用しているキャプチャ グループ |
+ |
+ |
||||
コントロールのエスケープ シーケンス |
+ |
|||||
dsw エスケープ文字 |
+ |
|||||
エスケープ形式 |
+ |
+ |
||||
16 進数のエスケープ シーケンス |
+ |
|||||
単一文字のエスケープ |
+ |
+ |
+ |
+ |
+ |
+ |
負Assert |
+ |
|||||
否定的なワード境界Assert |
+ |
|||||
非キャプチャ グループ |
+ |
|||||
最短一致の繰り返し |
+ |
|||||
8 進数のエスケープ シーケンス |
+ |
|||||
通常文字 |
+ |
+ |
+ |
+ |
+ |
+ |
結果としてAssert |
+ |
|||||
繰り返しを使用して「 {} 」 |
+ |
+ |
+ |
+ |
||
「 \ \ {} 」を使用して繰り返し |
+ |
+ |
||||
繰り返しを使用して 「 * 」 |
+ |
+ |
+ |
+ |
+ |
+ |
繰り返しを使用して 「または」。および 「 + 」 |
+ |
+ |
+ |
+ |
||
Unicode エスケープ シーケンス |
+ |
|||||
ワイルドカード文字 |
+ |
+ |
+ |
+ |
+ |
+ |
ワード境界Assert |
+ |
意味の詳細
アンカー
アンカーは文字列ではなく文字の位置に一致します。「 ^ 」は文字列の先頭と一致し「 $ 」では文字列の末尾と一致します。
前方参照
前方参照は 10 進値 n. に続くバックス ラッシュです。これはN 番目の キャプチャ グループ の内容と一致します。N の値は前方参照を指定するキャプチャ グループの数以上である必要があります。BRE と grep ではn の値はバックス ラッシュに従って 10 進数によって決まります。ECMAScript ではn の値はバックス ラッシュに続くすべての 10 進数によって決まります。したがってBRE と grep にn の値は正規表現に 9 人以上のキャプチャ グループがある場合でもまたは 9 はありません。ECMAScript ではn の値は型です。
次に例を示します。
(「 (a+) () b+)(c+) \ 3 " aabbbcbbb ターゲット シーケンス 「」に一致します。前方参照の 「 \ 3 "「 3 番目のテキストに (つまりb+) 」と一致します。これはターゲット シーケンス 「 aabbbcbb 」とは一致しません。
(「 \ 2 ") が無効です。
「 b (((((((())(())))))))\ 10 " に BRE と ECMAScript では意味があります。BRE で前方参照は 「 \ 1" です。前方参照が最初のキャプチャ グループ (「 (b 」と最終の末尾 「) 」で始まり前方参照の前にある) コンテンツ者に一致し最終的な文字 「 0 "「 0 " と一致します。ECMAScript では前方参照は 「 \ 10" です。これが 10 番目のキャプチャ グループ (つまり最も内側 1 と一致します。
角かっこ表現
角かっこ表現は一連の文字と 照合要素を 定義します。角かっこ表現は文字 「 ^ 」で始まると一致と設定の要素がターゲット シーケンスの現在の文字と一致する成功します。それ以外の場合検索は設定の要素でターゲット シーケンスの現在の文字と一致したと見なされます。
文字セットは 個別の文字 文字の範囲 文字クラス 等価クラス の一覧を示します シンボルを照合 して定義できます。
キャプチャ グループ
キャプチャ グループは正規表現の文法一つの単位としてコンテンツを設定しコンテンツに合わせてターゲットをテキスト ラベル。各キャプチャ グループに関連付けられたラベルが現在キャプチャを示す左かっこまでのキャプチャ グループを示す左かっこの数によって決まります数です。この実装ではキャプチャの最大数は 31 回です。
次に例を示します。
「 ab+ 」はターゲット シーケンス 「 abb 」に一致しますがターゲット シーケンス 「 abab 」とは一致しません。
(+) 「 ab 」とは一致しませんターゲット シーケンス 「 abb 」一致にターゲット シーケンス 「」 abab。
(「 (a+) () b+)() c+ 」ターゲット シーケンス 「」 aabbbc に一致し「」と aabbb サブシーケンス キャプチャ グループ 1サブシーケンスのキャプチャ グループ 2 「 aa 」「 bbb 」が付いているキャプチャ グループ 3サブシーケンス 「 c 」のキャプチャ グループ 4 に関連付けます。
文字クラス
角かっこ表現内の文字クラスは角かっこ表現で定義された文字セットに名前付きクラスのすべての文字が追加されます。文字クラスを作成するには「使用します。[: 」 「に続けてクラス名に続く :] 」)。内部的には文字クラスの名前は id = traits.lookup_classname を呼び出して認識されます。traits.isctype(ch, id) が true を返す文字 ch はこのようなクラスに属しています。既定の regex_traits テンプレートには次の表のクラス名をサポートします。
[クラス名] |
Description |
---|---|
「」 alnum |
大文字と小文字数字 |
アルファ」 「 |
大文字と小文字 |
「 null 」にします。 |
空白やタブ |
「」 cntrl |
エスケープ 文字 形式 の拡張 |
「数値」 |
数 |
グラフ」 「 |
大文字と小文字数字および区切り記号 |
下の」 「 |
小文字 |
「印刷」 |
大文字と小文字数字区切り記号および空間 |
「」 punct |
区分線 |
「空間」 |
空間 |
「 Upper Bound |
大文字 |
「」 xdigit |
数値「 ab 「「 c d 「" e "" f "「 A 「「 BCDE 「「 F 「 |
"d" |
数値と同じです |
"s" |
空間と同じです |
"w" |
と同様に alnum |
文字の範囲
角かっこ表現内の文字の範囲は角かっこ表現で定義された文字セットの範囲のすべての文字が追加されます。文字の範囲を作成するには範囲の最初と最後の文字の間に文字を 「 - 」配置します。これを行うにはの最後の文字が数値に以上の最初の文字の数値およびより小さいか等しい数値を持つすべての文字を取得します。追加した文字のセットがプラットフォーム固有の文字の表現に依存していることに注意してください。文字 「 - 」角かっこ表現の先頭または末尾で一致するか文字の範囲の最初または最後の文字としては自身を表します。
次に例を示します。
[入力] 「 ~ 」 Represents 文字 { 「 0 "「 1 "「 2 "「 3 "「 4 "「 5 "「 6 "「 7} " の設定をします。そのターゲットに配置する 「 0 "「 1 " など「 a 」と一致します。
ASCII 文字エンコーディングを使用するシステムでは「 h-k [入力] 文字」 { 「 h "" i "" j「 k} のセットを表します。そのターゲットに配置する 「 h 」「 I 」など「 \ x8A 」または 「 0 " と一致します。
EBCDIC の文字エンコーディングを使用するシステムで 0x88 および 「 k が 0x92 でエンコードされたときにh-k 文字 「 [] 」 { 「 h "" i 「「 \ \ x8Ax8B「 \ x8C「 \ x8D「 \ x8E「 \ \ x90 x8F「 j "「 k} の設定 (「 h はエンコードされます表します。そのターゲットに配置する 「 h 」「 i 」「 \ x8A 」など「 0 " とは一致しません。
[入力] 0-24 「 - 」 Represents 文字セット { 「 - 」「 0 "「 1 "「 2 "「 4 " を }。
「 [] 」 { 表します 0-2- 文字 「 0 "「 1 "「 2 "「 - 」 } の設定をします。
ASCII 文字エンコーディングを使用するシステム「 [+-- 」という文字セットを表します { 「 + 」「」「 - 」 }。
ただしロケールに依存する範囲を使用すると範囲の文字はロケールの照合順序によって決まります。範囲の最初の文字の後に照合する前に範囲の最後の文字文字をに設定します。2 個の終了文字をに設定するとあります。
照合要素
照合要素は単一の文字として扱う複数文字のシーケンスです。
シンボルの照合
角かっこ表現の照合のシンボルは角かっこ表現で定義されている設定に 照合要素を 追加します。COLLATE シンボルを作成するには「 [」を使用してください。に 「が続くパターンの照合要素によって追加します。] 」)。
コントロールのエスケープ シーケンス
制御文字エスケープ シーケンスは z 「を使用して 「文字に続く c に続くバックス ラッシュまたは z 「" A " の 1 つです。これはその文字で指定された ASCII の制御文字と一致します。たとえば 0x09 値を持つためCI「 \ 」ターゲット シーケンスの x09 」 \ <ctrl-i> 「に一致します。
Dsw エスケープ文字
dsw 文字エスケープは次の表に示すように文字クラスの短い名前です。
エスケープ シーケンス |
これはにという名前のクラス |
既定ではというクラス |
---|---|---|
「 \ d 」 |
「 [[: [出力]: d 」 |
「 [[: 数値」 : 出力] |
「 \ 17 C 」 |
「 [^ [: [出力]: d 」 |
「 [^ [: 数値」 : 出力] |
「 \ s 」 |
「 [[: s 」 : 出力] |
「 [[: [出力] 」 : 空間 |
「 \ 」 S |
「 [^ [: s 」 : 出力] |
「 [^ [: [出力] 」 : 空間 |
\ w 」 「 |
「 [[: [出力]: w 」 |
「 [a-zA-Z0-9_] * 「 |
\ W 」 「 |
「 [^ [: [出力]: w 」 |
[入力] ^a-zA-Z0-9_ 「 * 「 |
*ASCII の文字セット
等価クラス
角かっこ表現の等価クラスは角かっこ表現で定義されている設定が等価クラス定義の照合要素と同じ 照合要素 とそのすべての文字が追加されます。等価クラスを作成するには[「 = 」 「に続けて照合要素に続く] = 」を指定します。内部的には次の 2 つが照合要素 elt1 と elt2 はtraits.transform_primary(elt1.begin(), elt1.end()) == traits.transform_primary(elt2.begin(), elt2.end()) 場合はになります。
エスケープ形式
エスケープは通常形式の C 言語の文字エスケープエスケープのシーケンスから「 \ \ 」」\ 「 \ b 」「 \ f 」または 「 \ n 」または 「 \ r 」「 \ t 」「 \ v 」構成されます。これらは通常の意味バックス ラッシュ警告BackSpace キーフォーム フィード文字 (改行復帰水平タブと垂直タブはそれぞれとになります。ECMAScript では」\ 「 \ b 」許可されていません。(「 \ \ 」を使用できますが単一文字エスケープはエスケープ形式です)。
16 進数のエスケープ シーケンス
16 進数のエスケープ シーケンスには2 から 16 進数の数字 (0916 F) に続く文字が続く X バックス ラッシュです。これは 2 桁で指定された値を持つターゲット シーケンスの文字と一致します。たとえばASCII 文字エンコーディングを使用すると「 \ 」 x41 ターゲット シーケンス 「 A 」と一致します。
単一文字のエスケープ
単一文字エスケープは一つの文字に続くバックス ラッシュです。ここではその文字と一致します。この処理は文字に特別な意味がある場合に必要です ; 単一エスケープ文字を使用して特別な意味が削除されます。次に例を示します。
「 a* 」はターゲット シーケンス 「 aaa 」に一致しますがターゲット シーケンス 「 a* 」とは一致しません。
「 \ * 」はターゲット シーケンス 「 aaa 」照合にターゲット シーケンス 「 a* 」とは一致しません。
エスケープ文字列に入力できる文字セットは次に示すように正規表現の文法によって決まります。
文法 |
拡張可能な単一文字エスケープ文字 |
---|---|
BRE, grep |
{ '(', ')', '{', '}', '.', '[', '\', '*', '^', '$' } |
ERE, egre |
{ '(', ')', '{', '.', '[', '\', '*', '^', '$', '+', '?', '|' } |
awk |
ERE と」「 { 」と」 } |
ECMAScript |
すべての文字は識別子の一部となる文字を除外します。通常これは文字数字「 $ 」「 _ 」および Unicode エスケープ シーケンスが格納されます。詳細についてはECMAScript 言語仕様を参照してください。 |
個々の文字
角かっこ表現内の文字は角かっこ表現で定義された文字セットにその文字を追加します。任意の先頭を示す角かっこで「 ^ 」は自身を表します。
次に例を示します。
[入力] 「 abc 」と一致します。ターゲットに配置する 「 a 」「 b 」「 c 」「 d 」のシーケンス。
「 [] 」と一致します ^abc ターゲット シーケンス 「 d 」にしますがターゲットは 「 a 」「 b 」「 c 」を配置します。
「 [] 」と一致します a^bc ターゲットに配置する 「 a 」「 b 」「 c 」「 ^ 」はターゲット シーケンス 「 d 」を参照してください。
すべての正規表現の文法では 「] 」先頭に 「の最初の文字が ECMAScript を最初の [」または 「 ^ 」の次の文字はそれ自身を表します除外します。
次に例を示します。
「角かっこ表現を終了するには「] 」 [] 」が無効です
[入力]] 「 abc 」と一致します。ターゲットに配置する 「 a 」「 b 」「 c 」および 「] 」がターゲット シーケンス 「 d 」を参照してください。
[^] は 「 abc 」と一致しますがターゲット シーケンス 「 d 」ではなくターゲットは 「 a 」「 b 」「 c 」または 「] 」配置します。
ECMAScript では角かっこ表現内の文字を表す 「] 」の " \] 」を使用します。
次に例を示します。
「角かっこ表現が空であるため[入力] 」と一致します。ターゲット シーケンス 「 a 」とします。
[入力] \ 「 abc 」と一致します] ターゲットに配置する 「 a 」「 b 」「 c 」および 「] 」はターゲット シーケンス 「 d 」
負Assert
負の数が一致がコンテンツを表しています。これはターゲット シーケンスの文字は実行されません。たとえば「 (!。aa) (a*) 」は一致しターゲット シーケンス 「」サブシーケンス 「 a 」と 1 をに関連付けます。これはターゲット シーケンス 「 aa 」「 aaa ターゲット シーケンス」とは一致しません。
否定的なワード境界Assert
否定的なワード境界とは対象文字列の現在位置は ワード境界 の直後には照合を表しています。
非キャプチャ グループ
非キャプチャ グループの正規表現のマークが付けの一つの単位としてコンテンツがターゲットのテキスト ラベル。たとえば「 (): (または。b) * (c) はターゲット abbc テキスト 「」と一致しサブシーケンス 「 a 」と 1 番サブシーケンス 「 c 」のキャプチャ グループ 2 に関連付けます。
最短一致の繰り返し
最短一致の繰り返しはパターンに一致するターゲット シーケンスの最も短いサブシーケンスを実行します。最長一致の繰り返しは最大長を実行します。たとえば「 (a+) a*b () 」はターゲット シーケンス 「 aaab 」と一致します。最短一致の繰り返しを使用する場合ターゲット シーケンスの先頭にサブシーケンス 「 a 」と 1 のキャプチャ グループとターゲット シーケンスの末尾でサブシーケンス 「」 aab のキャプチャ グループ 2 に関連付けます。最長一致を使用する場合サブシーケンス 「 aaa 」とはキャプチャ グループ 1 とサブシーケンス 「 b 」のキャプチャ グループ 2 に関連付けます。
8 進数のエスケープ シーケンス
8 進数のエスケープ シーケンスは 12または 3 桁の数字 8 ~ () が続くバックス ラッシュです。これによりの値で指定された値を持つターゲット シーケンスの文字と一致します。すべての数値型が 「 0 " の場合シーケンスが無効です。たとえばASCII 文字エンコーディングを使用すると「 \ 101 " ターゲット シーケンス 「 A 」と一致します。
通常文字
通常文字は現在の文法の特別な意味がない有効な文字です。
ECMAScript では次の文字に特別な意味を持つ :
- ^ $ \ .* + ?( ) [ ] { } |
BRE と grep では次の文字に特別な意味を持つ :
- .[ \
特定のコンテキストで使用する場合 BRE と grep で次の文字に特別な意味を持つ :
「 * 」と正規表現の最初の文字がまたは正規表現の最初の 「 ^ 」に従うかのキャプチャ グループの最初の文字がまたはの最初のキャプチャ グループ 「 ^ 」の次の文字は先頭の文字であるためアドインのどちらの場合もあります。
「正規表現の最初の文字と ^ 」で特別な意味を持ちます。
「正規表現の最後の文字と $ 」で特別な意味を持ちます。
EREegrep と awk では次の文字に特別な意味を持つ :
- .[ \ ( * + ?{ |
特定のコンテキストで使用する場合 EREegrep と awk で次の文字に特別な意味を持ちます。
「) 」「前に一致したときに特別な意味があります (」。
「正規表現の最初の文字と ^ 」で特別な意味を持ちます。
「正規表現の最後の文字と $ 」で特別な意味を持ちます。
通常文字はターゲット シーケンスの同じ文字と一致します。既定値は 2 文字が同じ値で表されている場合一致が成功したことを意味します。大文字と小文字を区別しない一致では2 文字 ch0 と ch1 は traits.translate_nocase(ch0) == traits.translate_nocase(ch1) と一致します。ロケールに依存した検索では2 文字 ch0 と ch1 は traits.translate(ch0) == traits.translate(ch1) と一致します。
結果としてAssert
のコンテンツは一致をアサートしますがターゲット シーケンスの文字は実行されません。
次に例を示します。
「 (か。=aa) (a*) 」はターゲット シーケンス 「 aaaa 」に一致しサブシーケンス 「 aaaa 」とはキャプチャ グループ 1 に関連付けます。
「 aa () (a*) 」と一致しターゲット シーケンス 「 aaaa 」サブシーケンスに 「 aa 」とターゲット シーケンスの先頭に関連付けるキャプチャ グループ 1 とターゲット シーケンスの末尾でサブシーケンス 「 aa 」のキャプチャ グループ 2 が。
「 (か。=aa) ()|() 」は空のシーケンスとターゲット シーケンス 「 a 」に関連付けるキャプチャ グループ 1 が一致しない場合は(正が失敗した要求するためサブシーケンス 「 a 」のキャプチャ グループ 2。またターゲット シーケンス 「 aa 」と一致しサブシーケンス 「 aa 」とはキャプチャ グループ 1 と空のシーケンスのキャプチャ グループ 2 に関連付けます。
Unicode エスケープ シーケンス
Unicode エスケープ シーケンスは 4 桁の 16 進数 16 (09)F 16 進数が続く文字 " に続けてバックス ラッシュ u です。これは 4 桁で指定された値を持つターゲット シーケンスの文字と一致します。たとえばASCII 文字エンコーディングを使用すると「 \ u0041 」ターゲット シーケンス 「 A 」と一致します。
ワイルドカード文字
ワイルドカード文字も改行を除く対象の式の文字と一致します。
ワード境界
ワード境界は次の場合に実行されます :
現在の文字はターゲット シーケンスの先頭に単語文字の 1 つです A-Za-z0-9_.
現在の文字位置はターゲット シーケンスの末尾よりターゲット シーケンスの最後の文字が単語文字の 1 つです。
現在の単語文字の 1 文字は一つであり上記の文字はありません。
現在の文字が単語に使用される文字が 1 回ではなく直前の文字です。
ワード境界Assert
ワード境界とは対象文字列の現在位置は ワード境界 の直後にある一致する文字列を表しています。
検索と発見
ターゲット シーケンスに一致する正規表現には正規表現はターゲットの順序に一致させる必要があります。たとえば正規表現 「 bcd 」はターゲット シーケンス 「 bcd 」に一致しますがターゲット シーケンス 「 abcd 」ターゲット シーケンス 「 bcde 」とは一致しません。
成功した検索の正規表現について正規表現と一致するターゲット順にサブシーケンスが必要です。左端の検索は一致したサブシーケンスを検索します。
次に例を示します。
ターゲット シーケンス 「 bcd 」正規表現 「」 bcd 検索ではシーケンス全体が成功し一致します。ターゲット シーケンス 「 abcd 」と同じ検索では最後の 3 文字が成功し一致します。ターゲット シーケンス 「」 bcde 同じ検索では最初の 3 文字が成功し一致します。
ターゲット シーケンス 「 bcdbcd 」正規表現 「」 bcd 検索では最初の 3 文字が成功し一致します。
ターゲット シーケンスの位置に一致する複数のサブシーケンスがある場合は一致したパターンを選択する 2 とおりの方法があります。 最初は 正規表現 検索 に一致する最初に検索サブシーケンスを選択します。 最長一致は その場所で一致するものから最も長いサブシーケンスを選択します。最大の長さを持つ複数のサブシーケンスがある場合は最長一致が最初に見つかった 1 を選択します。たとえば最初の一致を使用すると正規表現検索の 「 b| 別の左の用語はサブシーケンスに一致するので BC 」ターゲット シーケンス 「 abcd 」サブシーケンス 「 b 」に一致します ; したがって最初の一致が別の右の用語はありません。最長一致を使用する場合これは 「 a b "" c 」 b 」「長いので一致を 「 a b "" c 」検索します。
は部分的に一致する正規表現の末尾に到達しない場合でも照合は失敗しないターゲット シーケンスの末尾に達すると成功します。したがって部分的に一致が成功したらターゲット シーケンスに文字を追加する以降の部分が失敗することがあります。ただし部分的に一致が失敗したらターゲット シーケンスに文字を追加する以降の一致に成功することはできません。たとえば部分文字列を「 ab 」はターゲット シーケンス 「 a 」「 .c 」と一致します。
書式指定フラグ
ECMAScript 形式の規則 |
SED 形式の規則 |
置換テキスト |
---|---|---|
「 $ 」 |
"&" |
は正規表現 [match[0].first, match[0].second)() に一致させる文字シーケンス |
$$ 」 「 |
「 $ 」 |
|
|
「 \ 」 |
"&" |
「 $ ` 」 (" 戻る " 見積もりに続くドル記号) |
|
正規表現 ([match.prefix().first, match.prefix().second)) に一致したサブシーケンスに先行文字のシーケンス |
「 $ 」 (前方見積もりに続くドル記号) |
|
正規表現 ([match.suffix().first, match.suffix().second)) に一致したサブシーケンスに続く文字シーケンス |
「」 $n |
「 \ n 」 |
n が 0 ~ 9 の数値である場所 n でキャプチャ グループに一致する文字のシーケンス ([match[n].first, match[n].second) |
|
「 \ \ n 」 |
「 \ n 」 |
「」 $nn |
|
nn が 10 ~ 99 の数値である場所 nn でキャプチャ グループに一致する文字のシーケンス ([match[nn].first, match[nn].second) |