形の表現を合わせたい
set _ on(\s*)set _ off
両方のアンダースコア_
は、1 つの連続した文字列を表します。
アイデアは、次のようなものに一致することです。
何とか半分にfooを設定し、fooをオフに設定します
セット バー オン セット バー オン セット バー オン セット バー オフ
重要なことは、私の場合、これらのディレクティブは、オンにすることで始まり、オフにすることで終わるということです。
形の表現を合わせたい
set _ on(\s*)set _ off
両方のアンダースコア_
は、1 つの連続した文字列を表します。
アイデアは、次のようなものに一致することです。
何とか半分にfooを設定し、fooをオフに設定します
セット バー オン セット バー オン セット バー オン セット バー オフ
重要なことは、私の場合、これらのディレクティブは、オンにすることで始まり、オフにすることで終わるということです。
どうですか
set\s[^\s]+\son
set\s[^\s]+\soff
説明:[^\s]+
スペースを含まない文字列に一致します。set\s[^\s]+\son
のようなものに一致しますが、 orには一致しset foo on
ません。上記の表現を組み合わせると、あなたが望むものに一致します。set foo bar on
set on
どの種類の正規表現を使用していますか?
perl で後方参照を行うことができます。
m/^\s*set\s*(\w*)\s*on.*set\s*\1\s*off\s*$/
^(set bar on)|(set bar off)$
壊す:
^(set bar on) = Looks for "set bar on" at the beginning of a string
(set bar off)$ = Looks for "set bar off" at the end of the string.
set bar on
これは、文字列の先頭とset bar off
末尾のa に一致します。置換を実行してそれらを空白文字に変更し""
、残りのデータを一致のために引き出すことができます。正規表現の実装に何を使用しているのかわかりませんので、これ以上のことはできません。前後\s
のスペースを削除したい場合は、先頭と末尾に追加することもできます。set bar on
set bar off