Regular Expression 2 (re2.h) の構文

正規表現は、文字列のセットを記述するための表記法です。 文字列が正規表現によって記述されたセット内にある場合、正規表現が文字列 と一致すると 言います。

最も簡単な正規表現は単一のリテラル文字です。 *+?()| のようなメタ文字を除き、文字自体が一致します。 メタキャラクターと一致させるには、バックスラッシュでエスケープします。 たとえば、 \+ リテラルプラス文字と一致します。

2 つの正規表現を変更または連結して新しい正規表現を形成できます。 e1s に一致し、 e2t に一致する場合、 e1 | e2s または t に一致し、 e1e2st と一致する場合。

メタ文字 *、、 +および ? は繰り返し演算子です。 e1* は、0 個以上の (場合によっては異なる) 文字列のシーケンスに一致し、それぞれが e1 と一致します。 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

実装の制限: 1000 を超える最小または最大の繰り返し数を作成するカウント フォーム x{n,m}x{n,}、および x{n} 拒否フォーム。 無制限の繰り返しはこの制限の対象ではありません。

  所有格の繰り返し
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 (clear) または xy-z (set xy、 clear 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})
Perl 文字クラス (すべて ASCII のみ)
\d 数字 (≡ [0-9])
\D 数字以外 (≡ [^0-9])
\s 空白 (≡ [\t\n\f\r])
\S 空白以外 (≡ [^\t\n\f\r])
\w word 文字 (≡ [0-9A-Za-z_])
\W not word characters (≡ [^0-9A-Za-z_])
\h 横スペース (サポートされていません)
\H 横スペース以外 (サポートされていません)
\v 縦スペース (サポートされていません)
\V 縦スペース以外 (サポートされていません)
ASCII 文字クラス
[[:alnum:]] 英数字 (≡ [0-9A-Za-z])
[[:alpha:]] アルファベット順 (≡ [A-Za-z])
[[:ascii:]] ASCII (≡ [\x00-\x7F])
[[:blank:]] 空白 (≡ [\t])
[[:cntrl:]] コントロール (≡ [\x00-\x1F\x7F])
[[:digit:]] 数字 (≡ [0-9])
[[:graph:]] グラフィカル (≡ [!-~][A-Za-z0-9!&quot;#$%&amp;&#39;()\*+,\-./:;&lt;=&gt;?@[\\\]^_` {\|}~])
[[:lower:]] 小文字 (≡ [a-z])
[[:print:]] 印刷可能 (≡ [-~] ≡ [[:graph:]])
[[:punct:]] 句読点 (≡ [!-/:-@[-`{-~])
[[:space:]] 空白 (≡ [\t\n\v\f\r])
[[:upper:]] 大文字 (≡ [A-Z])
[[:word:]] word 文字 (≡ [0-9A-Za-z_])
[[:xdigit:]] 16 進数 (≡ [0-9A-Fa-f])
  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 に従って使用許諾されています。

関連項目