Regular Expression 2 (re2.h) の構文
正規表現は、文字列のセットを記述するための表記法です。 文字列が正規表現によって記述されたセット内にある場合、正規表現が文字列 と一致すると 言います。
最も簡単な正規表現は単一のリテラル文字です。
*+?()|
のようなメタ文字を除き、文字自体が一致します。 メタキャラクターと一致させるには、バックスラッシュでエスケープします。 たとえば、 \+
はリテラルプラス文字と一致します。
2 つの正規表現を変更または連結して新しい正規表現を形成できます。 e1 が s に一致し、 e2 が t に一致する場合、 e1 | e2 が s または t に一致し、 e1e2 が st と一致します。
メタ文字 *
、 +
、 ?
は繰り返し演算子です。 e1*
は、それぞれ e1 と一致する 0 個以上の (異なる可能性がある) 文字列のシーケンスに一致します。 e1+
は 1 つ以上と一致します。 e1?
は 0 または 1 と一致します。
演算子の優先順位は、最も弱いものから最強のバインドまで、次のとおりです。
- 交代
- 連結
- 繰り返し演算子
明示的なかっこを使用すると、算術式のように異なる意味を強制できます。 いくつかの例: ab|cd
は (ab)|(cd)
と同等です。 ab\
は a(b\)
と同等です。
これまでに説明した構文は、従来の Unixegrep 正規表現構文の大部分です。 このサブセットは、すべての標準言語を記述するのに十分です。 通常の言語は、固定量のメモリのみを使用して、テキストを 1 回のパスで照合できる文字列のセットです。 新しい正規表現機能 (特に Perl とそれをコピーした言語) では、多くの新しい演算子とエスケープ シーケンスが追加されています。 これらの変更により、正規表現はより簡潔になり、時にはより不可解ですが、より強力ではありません。
このページでは、RE2 が受け入れる正規表現の構文を一覧で示します。
また、PCRE、PERL、VIM で受け入れられるいくつかの構文も一覧表示します。
構文表
単一文字式の種類 | 例 |
---|---|
改行を含む可能性のある任意の文字 (s=true) | . |
文字クラス | [xyz] |
否定文字クラス | [^xyz] |
Perl 文字クラス (リンク) | \d |
否定 Perl 文字クラス | \D |
ASCII 文字クラス (リンク) | [[:alpha:]] |
否定 ASCII 文字クラス | [[:^alpha:]] |
Unicode 文字クラス (1 文字の名前) | \pN |
Unicode 文字クラス | \p{Greek} |
否定 Unicode 文字クラス (1 文字の名前) | \PN |
否定 Unicode 文字クラス | \P{Greek} |
合成 | |
---|---|
xy | x の後に y が続く |
x|y | x または y (x 優先) |
反復 | |
---|---|
○* | ゼロ以上の x、より多くを優先 |
x+ | 1 以上の x、より多くを優先 |
x? | 0 または 1 の x、1 を優先 |
x{n,m} | n または n+1、または ... 、または m x、より多くを優先 |
x{n,} | n 以上の x、より多くを優先 |
x{n} | ちょうど n x |
x*? | ゼロ以上の x、より少ない値を優先 |
x+? | 1 以上の x、より少ない値を優先 |
x?? | 0 または 1 の x、0 を優先 |
x{n, m}? | n または n+1、または ... 、または m x、より少ない値を優先 |
x{n,}? | n 以上の x、より少ない値を優先 |
x{n}? | ちょうど n x |
x{} | (≡ x*)(サポートされていません)VIM |
x{-} | (≡ x*?)(サポートされていません)VIM |
x{-n} | (≡ x{n}?) (サポートされていません) VIM |
x= | (≡ x?) (サポートされていません) VIM |
実装の制限: カウント フォーム x{n,m}
、 x{n,}
、 x{n}
は、1000 を超える最小または最大の繰り返し数を作成するフォームを拒否します。 無制限の繰り返しはこの制限の対象ではありません。
所有格の繰り返し | |
---|---|
x*+ | ゼロ以上の x、所有格 (サポートされていません) |
x++ | 1 以上の x、所有格 (サポートされていません) |
x? + | 0 または 1 の x、所有格 (サポートされていません) |
x{n,m}+ | n または ... または m x、所有格 (サポートされていません) |
x{n,}+ | n 以上の x、所有格 (サポートされていません) |
x{n}+ | ちょうど n x、所有格 (サポートされていません) |
グループ化 | |
---|---|
(re) | 番号付きキャプチャグループ (サブマッチ) |
(?P<name>re) | 名前付き & 番号付きキャプチャ グループ (サブマッチ) |
(?<name>re) | named & 番号付きキャプチャ グループ (サブマッチ) (サポートされていません) |
(?'name're) | named & 番号付きキャプチャ グループ (サブマッチ) (サポートされていません) |
(?:re) | 非キャプチャグループ |
(?flags) | 現在のグループ内にフラグを設定; 非キャプチャ |
(?flags:re) | 再実行中にフラグを設定; 非キャプチャ |
(?#text) | コメント (サポートされていません) |
(?|x|y|z) | ブランチ番号のリセット (サポートされていません) |
(?>re) | re の所有格マッチ (サポートされていません) |
re@> | re の所有格マッチ (サポートされていません) VIM |
%(re) | 非キャプチャグループ (サポートされていません) VIM |
フラグ | |
---|---|
i | 大文字と小文字を区別しない (規定値は false) |
m | 複数行モード: ^ および $ は、開始/終了テキストに加えて開始/終了行に一致します (規定値は false) |
s | let . 一致する \n (規定値は false) |
U | ungreedy: x* と x* の意味のスワップ、x+ と x+?など (既定の false) |
フラグ構文は、 xyz
(設定) または -xyz
(クリア) または xy-z
( xy
設定、クリア z
) です。
空の文字列 | |
---|---|
^ | テキストまたは行の先頭 (m=true) |
$ | テキスト (\Zではなく\z) または行 (m=true) の終わり |
\A | テキストの最初 |
\b | ASCII の単語境界 (片側は \w、もう一方は \W、\A、または \z) |
\B | ASCII 単語境界ではない |
\g | 検索されるサブテキストの先頭 (サポートされていません) PCRE |
\G | 最後の一致の終わり (サポートされていません) PERL |
\Z | テキストの終わり、またはテキストの終わりの改行前 (サポートされていません) |
\z | テキストの終わり |
(?=re) | 文字列の一致の前 (サポートされていません) |
(?!re) | 文字列の不一致の前 (サポートされていません) |
(?<=re) | 文字列の一致の後 (サポートされていません) |
(?<!re) | 文字列の不一致の後 (サポートされていません) |
再& | 文字列の一致の前 (サポートされていません) VIM |
re@= | 文字列の一致の前 (サポートされていません) VIM |
re@! | 文字列の不一致の前 (サポートされていません) VIM |
re@<= | 文字列の一致の後 (サポートされていません) VIM |
re@<! | 文字列の不一致の後 (サポートされていません) VIM |
\zs | 一致の開始位置を設定する (= \K) (サポートされていません) VIM |
\ze | 一致の終了位置を設定する (サポートされていません) VIM |
\%^ | ファイルの先頭 (サポートされていません) VIM |
\%$ | ファイルの末尾 (サポートされていません) VIM |
\%V | 画面上 (サポートされていません) VIM |
\%# | カーソル位置 (サポートされていません) VIM |
\%'m | m の位置をマークする (サポートされていません) VIM |
\%23l | 23 行目 (サポートされていません) VIM |
\%23c | 23 列目 (サポートされていません) VIM |
\%23v | バーチャルの 23 列目 (サポートされていません) VIM |
エスケープ シーケンス | |
---|---|
\a | bell (≡ \007) |
\f | フォームフィード (≡ \014) |
\t | 水平方向タブ (≡ \011) |
\n | 改行 (≡ \012) |
\r | キャリッジ リターン (≡ \015) |
\v | 垂直タブバー文字 (≡ \013) |
* | リテラル *、句読点の場合 * |
\123 | 8 進数コード (最大 3 桁の数字) |
\x7F | 16 進数コード (2 桁の数字) |
\x{10FFFF} | 16 進文字コード |
\C | UTF-8 モードでも 1 バイトに一致させる |
\Q...\E | ... に句読点がある場合でも、リテラルテキスト ... |
\1 | 後方参照 (サポートされていません) |
\b | バックスペース (サポートされていません) (\010 を使用) |
\cK | 制御文字 ^K (サポートされていません) (\001 等を使用) |
\e | エスケープ (サポートされていません) (\033 を使用) |
\g1 | 後方参照 (サポートされていません) |
\g{1} | 後方参照 (サポートされていません) |
\g{+1} | 後方参照 (サポートされていません) |
\g{-1} | 後方参照 (サポートされていません) |
\g{name} | 名前付き後方参照 (サポートされていません) |
\g<name> | サブルーチン コール (サポートされていません) |
\g'name' | サブルーチン コール (サポートされていません) |
\k<name> | 名前付き後方参照 (サポートされていません) |
\k'name' | 名前付き後方参照 (サポートされていません) |
\lX | 小文字 X (サポートされていません) |
\ux | 大文字 X (サポートされていません) |
\L...\E | 小文字テキスト ... (サポートされていません) |
\K | $0 の最初をリセット (サポートされていません) |
\N{name} | 名前付き Unicode 文字 (サポートされていません) |
\R | 改行 (サポートされていません) |
\U...\E | 大文字テキスト ... (サポートされていません) |
\X | 拡張 Unicode シーケンス (サポートされていません) |
%d123 | 10 進数文字 123 (サポートされていません) VIM |
%xFF | 16 進文字 FF (サポートされていません) VIM |
%o123 | 8 進文字 123 (サポートされていません) VIM |
%u1234 | Unicode 文字 0x1234 (サポートされていません) VIM |
%U12345678 | Unicode 文字 0x12345678 (サポートされていません) VIM |
文字クラス要素 | |
---|---|
x | 1 文字 |
A-Z | 文字範囲 (両端を含む) |
\d | Perl 文字クラス |
[:foo:] | ASCII 文字クラス foo |
\p{Foo} | Unicode 文字クラス Foo |
\pF | Unicode 文字クラス F (1文字の名前) |
文字クラス要素としての名前付き文字クラス | |
---|---|
[\d] | 数字 (≡ \d) |
[^\d] | 数字以外 (≡ \D) |
[\D] | 数字以外 (≡ \D) |
[^\D] | 数字以外ではない (≡ \d) |
[[:name:]] | 文字クラス内の名前付き ASCII クラス (≡ [:name:]) |
[^[:name:]] | 否定された文字クラス内の名前付きASCIIクラス (≡ [:name:]) |
[\p{Name}] | 文字クラス内の名前付き Unicode プロパティ (≡ \p{Name}) |
[^\p{Name}] | 否定された文字クラス内の名前付き Unicode プロパティ (≡ \P{Name}) |
Unicode文字クラス名 -- 一般カテゴリ | |
---|---|
C | その他 |
[CC] | control |
Cf | format |
Cn | 割り当てられていないコードポイント (サポートされていません) |
Co | 私的使用 |
Cs | 代理 |
L | 文字 |
LC | 大文字または小文字 (サポートされていません) |
L& | 大文字または小文字 (サポートされていません) |
Ll | 小文字 |
Lm | 修飾文字 |
Lo | その他の文字 |
Lt | タイトルケースレター |
Lu | 大文字 |
M | マーク |
Mc | 間隔マーク |
Me | 囲みマーク |
Mn | 非間隔マーク |
N | number |
Nd | 10 進数 |
Nl | 文字番号 |
なし | その他の番号 |
P | 句読点 |
Pc | コネクタの句読点 |
Pd | ダッシュの句読点 |
Pe | クローズ句読点 |
Pf | 最後の句読点 |
Pi | 最初の句読点 |
Po | その他の句読点 |
Ps | 句読点を開く |
S | symbol |
Sc | 通貨記号 |
Sk | 修飾子記号 |
Sm | 数学記号 |
So | その他の記号 |
Z | 区切り記号 |
Zi | 行区切り記号 |
Zp | 段落区切り記号 |
Zs | スペース区切り記号 |
Unicode 文字クラス名 - スクリプト |
---|
Adlam 語 |
アーホム語 |
Anatolian_Hieroglyphs |
アラビア語 |
アルメニア語 |
アベスタン語 |
バリ文字 |
バム語 |
Bassa_Vah |
バタク語 |
ベンガル語 |
バイキスキ語 |
ボポモフォ語 |
ブラーフミー文字 |
点字 |
ブギス語 |
ブヒド語 |
Canadian_Aboriginal |
カリアン語 |
Caucasian_Albanian |
チャクマ語 |
Cham |
チェロキー語 |
コーラスミア語 |
共通 |
コプト語 |
楔形文字 |
キプロス語 |
キリル文字 |
Deseret |
デバナガリ文字 |
Dives_Akuru |
ドグラ語 |
デュプロイ語 |
Egyptian_Hieroglyphs |
エルバサン語 |
エリマ語 |
エチオピア語 |
ジョージア語 |
グラゴ語 |
ゴシック言語 |
グランサ語 |
ギリシャ語 |
グジャラート語 |
Gunjala_Gondi |
グルムキー文字 |
漢語 |
ハングル文字 |
Hanifi_Rohingya |
ハヌヌー語 |
ハトラン言語 |
ヘブライ語 |
ひらがな |
Imperial_Aramaic |
継承 |
Inscriptional_Pahlavi |
Inscriptional_Parthian |
ジャワ文字 |
カイティ語 |
カンナダ語 |
カタカナ |
Kayah_Li |
カロシュティ語 |
Khitan_Small_Script |
クメール語 |
コイキ語 |
クダワディ語 |
ラオ語 |
ラテン文字 |
レプチャ文字 |
リンブ文字 |
Linear_A |
Linear_B |
リス語 |
リュキア語 |
リディア語 |
マハジャニ語 |
マカッサル語 |
マラヤーラム語 |
マンダ語 |
マニケアン語 |
メルヘン語 |
Masaram_Gondi |
メデファイドリン語 |
Meetei_Mayek |
Mende_Kikakui |
Meroitic_Cursive |
Meroitic_Hieroglyphs |
ミャオ語 |
Modi |
モンゴル語 |
ムロ語 |
ムルタニ語 |
ミャンマー文字 |
ナバテア語 |
ナンディナガリ語 |
New_Tai_Lue |
ネワ語 |
マネンカ文字 |
ヌーシュ語 |
Nyiakeng_Puachue_Hmong |
オガム語 |
Ol_Chiki |
Old_Hungarian |
Old_Italic |
Old_North_Arabian |
Old_Permic |
Old_Persian |
Old_Sogdian |
Old_South_Arabian |
Old_Turkic |
オリヤー語 |
オーセージ語 |
オスマンヤ語 |
Pahawh_Hmong |
パルミレン語 |
Pau_Cin_Hau |
Phags_Pa |
フェニキア語 |
Psalter_Pahlavi |
レジャン語 |
ルーン語 |
サマリア語 |
サウラーシュトラー文字 |
シャラダ語 |
シャビ語 |
シッダム語 |
サインライティング |
シンハラ語 |
ソグディア語 |
Sora_Sompeng |
ソヨンボ語 |
スンダ文字 |
Syloti_Nagri |
シリア語 |
タガログ語 |
タグバンワ語 |
Tai_Le |
Tai_Tham |
Tai_Viet |
タクリ語 |
タミル語 |
タングート語 |
テルグ語 |
ターナ語 |
タイ語 |
チベット文字 |
ティフィナ語 |
ティルフタ語 |
ウガリト語 |
ヴァイ文字 |
ワンチョ語 |
Warang_Citi |
エジディ語 |
イー語 |
Zanabazar_Square |
Vim 文字クラス | |
---|---|
\i | 識別子文字 (サポートされていません) VIM |
\I | \i 数字を除く (サポートされていません) VIM |
\k | キーワード文字 (サポートされていません) VIM |
\K | \k 数字を除く (サポートされていません) VIM |
\f | ファイル名文字 (サポートされていません) VIM |
\F | \f 数字を除く (サポートされていません) VIM |
\p | 印刷可能な文字 (サポートされていません) VIM |
\P | \p 数字を除く (サポートされていません) VIM |
\s | 空白文字 (≡ [\t]) (サポートされていません) VIM |
\S | 空白以外の文字 (≡ [\t]) (サポートされていません) VIM |
\d | 数字 (≡ [0-9]) VIM |
\D | \d ではない VIM |
\x | 16 進数 (≡ [0-9A-Fa-f]) (サポートされていません) VIM |
\X | \x 以外 (サポートされていません) VIM |
\o | 8 進数 (≡ [0-7]) (サポートされていません) VIM |
\O | \o 以外(サポートされていません) VIM |
\w | 単語文字 VIM |
\W | \w 以外 VIM |
\h | 単語の頭文字 (サポートされていません) VIM |
\H | \h 以外 (サポートされていません) VIM |
\a | アルファベット順 (サポートされていません) VIM |
\A | \a 以外 (サポートされていません) VIM |
\l | 小文字 (サポートされていません) VIM |
\L | 小文字ではない (サポートされていません) VIM |
\u | 大文字 (サポートされていません) VIM |
\U | 大文字ではない (サポートされていません) VIM |
_x | \x プラス改行、任意の x に対して (サポートされていません) VIM |
\c | 大文字小文字を区別しない (サポートされていません) VIM |
\C | 大文字小文字を一致させる (サポートされていません) VIM |
\m | magic (サポートされていません) VIM |
\M | nomagic (サポートされていません) VIM |
\v | verymagic (サポートされていません) VIM |
\V | verynomagic (サポートされていません) VIM |
\Z | Unicode 結合文字の違いを無視する (サポートされていません) VIM |
Magic | |
---|---|
(?{code}) | 任意の Perl コード (サポートされていません) PERL |
(??{code}) | 延期された任意のPerlコード (サポートされていません) PERL |
(?n) | 正規表現キャプチャグループ n への再帰呼び出し (サポートされていません) |
(?+n) | 相対グループ +n への再帰呼び出し (サポートされていません) |
(?-n) | 相対グループ -n への再帰呼び出し (サポートされていません) |
(?C) | PCRE コールアウト (サポートされていません) PCRE |
(?R) | 正規表現全体の再帰呼び出し (≡ (?0)) (サポートされていません) |
(?&名) | 名前付きグループへの再帰呼び出し (サポートされていません) |
(?P=name) | 名前付き後方参照 (サポートされていません) |
(?P>name) | 名前付きグループへの再帰呼び出し (サポートされていません) |
(?(cond)true|false) | 条件分岐 (サポートされていません) |
(?(cond)true) | 条件分岐 (サポートされていません) |
(*ACCEPT) | 正規表現を Prolog のようにする (サポートされていません) |
(*COMMIT) | (サポートされていません) |
(*F) | (サポートされていません) |
(*FAIL) | (サポートされていません) |
(*MARK) | (サポートされていません) |
(*PRUNE) | (サポートされていません) |
(*SKIP) | (サポートされていません) |
(*THEN) | (サポートされていません) |
(*ANY) | 改行規則を設定する (サポートされていません) |
(*ANYCRLF) | (サポートされていません) |
(*CR) | (サポートされていません) |
(*CRLF) | (サポートされていません) |
(*LF) | (サポートされていません) |
(*BSR_ANYCRLF) | \R 規則を設定する (サポートされていません) PCRE |
(*BSR_UNICODE) | (サポートされていません) PCRE |
コンテンツ ライセンス
注
このページの一部の情報は、Chromium.org によって作成および共有されている著作物に基づいており、Creative Commons Attribution 4.0 International License に記載されている条項に従って使用されています。 元のページはこちらです。
この著作物は、Creative Commons Attribution 4.0 International License に従って使用許諾されています。