私は、単一の正規表現行で可能な比較的単純な語順のセットを一致させることに本当に苦労しています。
基本的に、私はこれらの(他の文法的に類似した)可能性と一致させたいと思います:
「変数をオンに設定」
「変数をオフに設定」
「変数をオンに設定」
「変数をオフに設定」
「変数を設定する」
「変数に設定」
「変数に設定」
「varを設定する」
必要なグループは、「var」(任意の1つの単語で可能)と、常にオンまたはオフになる値だけです。それが基本的な考え方です。
それを念頭に置いて、2つの可能な文法構造があります。
(on/off) (perhaps a word) (a word)
(a word) (on/off)
私はこれらの可能性を次の正規表現と独立して一致させることができました。
/((on |off )([a-z]{1,})? ([a-z]{2,}))/i
/([a-z]{2,}) (on|off)/i
だから、私はこれができると思いました:
/(((on |off )([a-z]{1,})? ([a-z]{2,})))|(([a-z]{2,}) (on|off))/i
これは(フレーズ1)|(フレーズ2)ですが、フレーズ2は、「set」が名前であると考えて、「setoff」と常に一致します。私も試しました:
/((?!set)) (((on |off )([a-z]{1,})? ([a-z]{2,})))|(([a-z]{2,}) (on|off))/i
成功しませんでした。
編集1:また、私はこれらのフレーズがファイルのどこにでもあることに言及することを怠りました。それらは独立した線上にありません。
例:「これは変数を設定する方法です」は「変数を設定する」と同じくらい可能性があります
質問:
別々に一致させることなくこれを一緒に行うことができる最良の方法は何ですか?
正規表現ORステートメントの一致する順序を強制する方法はありますか?