URL マップの RE2 仕様

このページでは、URL マップの正規表現RE2 構文を使用する場合の要件と制限事項について説明します。

RE2 には次の制限が組み込まれています。

  • RE2 は、任意の先読みアサーションや後読みアサーションをサポートしていません。また、後方参照もサポートしていません。具体的には、次の後方参照演算子がサポートされていません。
    • (?=) - 肯定先読み
    • (?!) - 否定先読み
    • (?<=) - 肯定後読み
    • (?<!) - 否定後読み
    • \N - N が整数の後方参照
  • RE2 は \cx を Control-X 文字として認識しません。
  • RE2 はアトミック グループ化演算子 (?>...)++ を認識しません。
  • RE2 は \C\G\X を認識しません。
  • RE2 は、条件付きサブパターン (?(...)...)、コメント (?#...)、パターン参照 (?R) (?1) (?P>foo)、C コールアウト (?C...) を認識しません。

前述の RE2 の制限に加えて、次の許可リストを使用して正規表現の構文にさらに制限を適用します。

  • 単一文字の演算子は使用できます。
  • グループにはサブマッチ演算子のみを使用できます。
  • グループは繰り返しなしでのみ許可されます
  • 文字の繰り返しは、次のものと組み合わせて単一の正規表現でのみ使用できます。
  • 範囲には次のもののみを含めることができます。

空の文字列と空の文字列の類似

演算子 説明
^ テキストまたは行の先頭(m=true)
$ テキスト(\Z ではなく \z など)または行(m=true)の末尾
\A テキストの先頭
\b ASCII 単語境界(一方の側が \w で、もう一方の側が \W、\A、\z)
\B ASCII 単語境界にない
\g 検索対象のサブテキストの先頭
\G 最後の一致の末尾
\z テキストの末尾

繰り返し

演算子 説明
x* x が 0 以上、多い方が望ましい
x+ x が 1 以上、多い方が望ましい
x? x が 0 または 1、1 が望ましい
x{n,m} x が n または n+1 … m、多い方が望ましい
x{n,} x が n 以上、多いほど望ましい
x{n} x が n
x*? x が 0 以上、少ない方が望ましい
x+? x が 1 以上、少ない方が望ましい
x?? x が 0 または 1、0 が望ましい
x{n,m}? x が n または n+1 … m、少ない方が望ましい
x{n,}? x が n 以上、少ない方が望ましい
x{n}? x が n

サブマッチ

演算子 説明
(re) 番号付きキャプチャ グループ(サブマッチ)
(?P<name>re) 名前付きおよび番号付きのキャプチャ グループ(サブマッチ)
(?<name>re) 名前付きおよび番号付きのキャプチャ グループ(サブマッチ)
(?:re) キャプチャしないグループ
(?flags) 現在のグループ内でフラグを設定する(キャプチャなし)
(?flags:re) re でフラグを設定する(キャプチャなし)

範囲

演算子 説明
[] 範囲
\d 数字(≡ [0-9])
\D 非数字(≡ [^0-9])
\s 空白文字(≡ [\t\n\f\r ])
\S 非空白文字(≡ [^\t\n\f\r ])
\w 単語構成文字(≡ [0-9A-Za-z_])
\W 非単語構成文字(≡ [^0-9A-Za-z_])
[[:alnum:]] 英数字(≡ [0-9A-Za-z])
[[:alpha:]] 英字(≡ [A-Za-z])
[[:ascii:]] ASCII(≡ [\x00-\x7F])
[[:blank:]] 空白(≡ [\t ])
[[:cntrl:]] 制御文字(≡ [\x00-\x1F\x7F])
[[:digit:]] 数字(≡ [0-9])
[[:lower:]] 小文字(≡ [a-z])
[[:space:]] 空白文字(≡ [\t\n\v\f\r ])
[[:upper:]] 大文字(≡ [A-Z])
[[:word:]] 単語構成文字(≡ [0-9A-Za-z_])
[[:xdigit:]] 16 進数(≡ [0-9A-Fa-f])

範囲で使用できる文字

文字範囲 説明
0-9, A-Z, a-z 英数字
\x00-\x7F ASCII
0-9A-Fa-f 16 進数
\t\n\v\f\r 空白文字
^ 範囲否定
!"#$%&'()*+,\-.:;<=>?@[\\\]^_`{|}~ その他の文字