正規表現演算子の優先順位 (..|.. ... ..|..)
正規表現では、パイプ (|) 演算子の優先順位は左から右です。これは、入力文字列に一致する最初の選択肢が選択され、それ以降の選択肢は無視されることを意味します。
この動作は、プログラミング言語の他のほとんどの二項演算子の動作とは対照的です。右から左へ。たとえば、式 1 2 * 3 では、乗算演算が最初に実行され、値は 6 になります。次に加算演算が実行され、最終値は 8 になります。
パイプ演算子の -right の優先順位は、正規表現のコンテキストでは意味があります。これにより、式を可能な限り最も効率的な方法で入力文字列と一致させることができ、代替案を後戻りして再評価する必要がなくなります。
RegexOptions.RightToLeft 修飾子は優先順位に影響を与えないことに注意することが重要です。パイプオペレーターの。この修飾子は、正規表現エンジンが入力文字列を検査する方向にのみ影響します。
たとえば、次の正規表現は、入力文字列 "bbac" 内で最初に出現する文字列 "bb" と一致します。
(aaa|bb|a)
Regex.Match を使用して「bbac」内の一致を検索すると、取得される値は「bb」になります。これは、正規表現内で代替「bb」が代替「a」の前に出現し、一致が見つかると正規表現エンジンが代替の評価を停止するためです。
すべての一致を検索するために Regex.Matches が使用されている場合「bbac」では、「bb」と「a」の両方が結果に含まれます。これは、Regex.Matches が出現順序に関係なく、正規表現内のすべての代替を評価するためです。
以上が優先順位は正規表現のパイプ演算子のマッチングにどのような影響を与えますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。