3

形の表現を合わせたい

set _ on(\s*)set _ off

両方のアンダースコア_は、1 つの連続した文字列を表します。

アイデアは、次のようなものに一致することです。

何とか半分にfooを設定し、fooをオフに設定します

セット バー オン セット バー オン セット バー オン セット バー オフ

重要なことは、私の場合、これらのディレクティブは、オンにすることで始まり、オフにすることで終わるということです。

4

3 に答える 3

1

どうですか

set\s[^\s]+\son
set\s[^\s]+\soff

説明:[^\s]+スペースを含まない文字列に一致します。set\s[^\s]+\sonのようなものに一致しますが、 orには一致しset foo onません。上記の表現を組み合わせると、あなたが望むものに一致します。set foo bar onset on

どの種類の正規表現を使用していますか?

于 2012-10-09T19:02:07.400 に答える
1

perl で後方参照を行うことができます。

m/^\s*set\s*(\w*)\s*on.*set\s*\1\s*off\s*$/
于 2012-10-09T19:05:09.200 に答える
0
^(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 onset bar off

于 2012-10-09T19:42:01.427 に答える