正则表达式匹配具有相同组的可选参数

时间:2012-11-06 20:30:24

标签: c# regex

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

2 个答案:

答案 0 :(得分:2)

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

尾随?使最后一组成为可选

答案 1 :(得分:0)

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

ab?会匹配aab,因为?之后的b表示字符或组是可选的。

另一个示例:a(abc)?这将与aaabc匹配abc反向引用,因为您告诉模式“编译器”"abc" string是可选的。

对可选项目进行了很好的解释:Optional Items in Regex