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 の制限に加えて、次の許可リストを使用して正規表現の構文にさらに制限を適用します。

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

空の文字列と空の文字列のアナログ

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

繰り返し

演算子 説明
x* 0 個以上の 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*? 0 個以上の 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

サブマッチ

演算子 説明
(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 空白文字
^ 範囲の否定
!"#$%&'()*+,\-.:;<=>?@[\\\]^_`{|}~ その他の文字