匹配所有这些线的最佳方法是什么。在前两行中,我将有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-]+)")
答案 0 :(得分:2)
set admin user "(?<user>[\w-]+)" password "(?<password>.*?)"(\s+privilege\s+"(?<mode>[\w-]+)")?
尾随?
使最后一组成为可选
答案 1 :(得分:0)
只需添加?
作为可选组或字符。
ab?
会匹配a
和ab
,因为?
之后的b
表示字符或组是可选的。
另一个示例:a(abc)?
这将与a
和aabc
匹配abc
反向引用,因为您告诉模式“编译器”"abc"
string是可选的。
对可选项目进行了很好的解释:Optional Items in Regex