(..|. .. .|..) 内の正規表現演算子の順序
( 内の正規表現演算子の順序) ..|. ..|..) は左から右の優先順位に従います。これは、最初に一致したオプションが結果となり、他のオプションは評価されないことを意味します。
この動作は、非決定性有限オートマトン (NFA) 正規表現に典型的なものです。詳細な説明については、正規表現.info の「代替」ページを参照してください。
RegexOptions.RightToLeft フラグは、正規表現エンジンが入力文字列を検査する順序ではなく、方向にのみ影響することに注意することが重要です。
たとえば、正規表現 (aaa|bb|a) の場合、「bbac」を Regex.Match と一致させると、次の結果が返されます。 「bb」は、「a」の代替が「bb」の後に表示されるためです。ただし、Regex.Matches は "bb" と "a" の両方を返します。
さらに、アンカーされていない代替グループ内では、代替の順序が重要です。たとえば、「abbccaa」に一致する (a|aa|aaa) は、すべての「a」文字に一致します。ただし、この正規表現のデモで示されているように、単語の境界が追加されると、順序は無関係になります。
以上が正規表現演算子の順序は代替グループ (..|. .. .|..) のマッチングにどのような影響を与えますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。