尽可能多的匹配,而不是向前看
本文关键字:向前看 尽可能 | 更新日期: 2023-09-27 18:04:58
我想匹配wiki列表#,但不匹配if *或:跟随#。例如
# Something -> Match
#* Something -> Not match
## Something -> Match
##* Something -> Not matched
##: Something -> Not matched
我想出了下面的正则表达式:
Regex.Match("##* Something", @"^#+(?![*:])'s*(?<Definition>.*?)'s*$").Groups["Definition"]
但是定义值是'#* Something'。我发现(?![*:])导致#+只匹配一次,而不是像上面的例子那样多次匹配——有两个#,但只匹配第一个。
我怎样才能写出匹配的模式呢?
多谢
你需要修改你的前瞻性:
@"^(?!#+[*:])#+'s*(?<Definition>.*?)'s*$"
现场演示
如果好的是"#"后面加空格:(那么就不需要定义"*"或":")
^#+'s(?<Definition>.*?)'s*$
或if(1)字符可以跟在还不是空格的"#"后面,但不能是":"或"*"。
^#+[^:'*]?'s(?<Definition>.*?)'s*$