(..|. .. .|..)
演算子 - 左から右、右から左、または何か他のものの式の優先順位は何ですか?正規表現演算子の順番(.. | .. ... .. |)
11
A
答えて
12
左から右へ、最初の選択肢は「勝利」と一致し、他のものはチェックされません。これは典型的なNFA正規表現の動作です。その動作の良い説明はregular-expressions.info Alternation pageにあります。
RegexOptions.RightToLeft
は、正規表現エンジンが入力文字列を右から左へと調べるだけで、正規表現エンジンがパターン自体をどのように処理するかには影響しません。
私が説明しましょう:a
代替がbbb
後に表示されるので、あなたが(aaa|bb|a)
正規表現を持っているとRegex.Match
を使用してbbac
で試合を見つけるしようとした場合、あなたが取得する値はbb
です。 Regex.Matches
を使用すると、すべての一致が得られ、bb
とa
の両方が結果になります。
また、正規表現パターンを左から右に調べると、アンカーされていない代替グループ内にがあることがわかります。代替の順番はです。あなたはabbccaa
照合する(a|aa|aaa)
正規表現を使用する場合は、最初のa
選択肢は文字列の各a
を(regex demoを参照)に一致します。単語境界を追加したら、任意の順序で代替語を配置できます(one more regex demo参照)。
関連する問題
- 1. 正規表現のチルダ演算子
- 2. 正規表現での算術演算
- 3. および/または正規表現の演算子
- 4. Python、正規表現、名前付きグループ、 "論理演算子"
- 5. 論理演算子ANDとPHP正規表現
- 6. メモ帳++正規表現加算番号
- 7. C#の演算子の演算順序
- 8. PHP正規表現のOR演算子(ユニコードの検証を含む)
- 9. Groovy:内部の正規表現を持つリストに "in"演算子を使用
- 10. awk:文字列から正規表現演算子をエスケープする関数
- 11. C++演算子のオーバーロード順
- 12. 正規表現のダブル番号
- 13. プロジェクトの正規表現番号ヘルプ
- 14. 正規表現[任意の番号]
- 15. 正規表現の置換え番号
- 16. 正規表現「の文字番号」
- 17. 正規表現n番目の一致
- 18. 正規表現の電話番号
- 19. 正規表現の正規表現
- 20. 正規表現は、 - (ダッシュ)と無番号
- 21. 正規表現としてのバージョン番号の表現
- 22. 正規表現 - 正規表現
- 23. 演算子の実行順序<<
- 24. 演算子の優先順位c#
- 25. ブール演算子の優先順位
- 26. 演算子if演算子
- 27. 正規表現文字クラス減算
- 28. 電子メールの正規表現
- 29. ファイル拡張子の正規表現
- 30. 唐辛子+トマト+スイカの正規表現
私は、ここでは最初のものの代わりに、最も長いマッチを常にとる正規表現エンジンがあると思います。 – Joey
POSIX準拠の正規表現エンジンは、最も長いマッチを必要とします。また、Perl6 '/ pattern1 | pattern2/'は最も長い選択肢にもマッチします(' || '演算子があり、他のほとんどのフレーバーでは単純な' | 'として機能し、最初に見つかった代替物を生成します)。 –