1

匹配所有这些行的最佳方法是什么。在前两行中,我将有 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

只需添加一个?作为可选组或字符。

ab?将匹配a,并且ab由于?之后的b指示字符或组是可选的。

另一个例子:a(abc)?这也将匹配aaabc带有abc反向引用,因为您已经告诉模式“编译器”该"abc"字符串是可选的。

对可选项目的很好解释:Regex中的可选项目

于 2012-11-06T20:36:54.347 回答