1

これらすべての行を一致させる最良の方法は何ですか? 最初の 2 行では、user/password/mode の 3 つのグループを作成しますが、最後の行では、理想的には 3 つのグループすべてを作成したいと考えていますが、3 の値だけが空の文字列です。

set admin user "user1" password "password1" privilege "all"
set admin user "user2" password "password2" privilege "all"
set admin user "user3" password "password3" 

私の現在の正規表現は最初の 2 つにのみ一致します。

set admin user "(?<user>[\w-]+)" password "(?<password>.*)"(\s+privilege\s+"(?<mode>[\w-]+)")
4

2 に答える 2

1
set admin user "(?<user>[\w-]+)" password "(?<password>.*?)"(\s+privilege\s+"(?<mode>[\w-]+)")?

末尾?は最後のグループをオプションにします

于 2012-11-06T20:32:04.317 に答える
0

?オプションのグループまたは文字としてa を追加するだけです。

ab?は一致aab?その後はb文字またはグループがオプションであることを示しているためです。

別の例:パターン「コンパイラ」に文字列がオプションであることを伝えているため、これa(abc)?は後方参照にも一致aします。aabcabc"abc"

オプション項目の非常によく説明された: Optional Items in Regex

于 2012-11-06T20:36:54.347 に答える