让我们来看看这个正则表达式:
/start[\S\s]+?(captureme)?[\S\s]+?end/g
并测试此文:
case 1:
start
captureme
suffix
end
case 2:
start
prefix
captureme
suffix
end
1)请向我解释,为什么" captureme"在案例1中被捕获到一个组中,并且在案例2中没有被捕获?
2)如果我需要,我应该使用什么" captureme"如果文本存在于最近的"开始"之间,则要捕获的文本。和"结束"不管他们之间有什么关系?
请注意,我需要这个正则表达式来匹配if" captureme"缺少:
case 3:
start
prefix
suffix
end
谢谢!
答案 0 :(得分:0)
您可以使用具有负前瞻的条件:
(?(?!start)(captureme)|end)
示例强>:
https://regex101.com/r/E6ZXZe/1
你的正则表达式不匹配的原因是因为量词?
表示"匹配0到1次",如果你把它从(捕获)中取出然后它应该工作,虽然如果你的正则表达式引擎允许的话,它可能更容易做出结论。
答案 1 :(得分:0)
我在正则表达式沙箱中玩游戏,这对我很有用:
start[\S\s]+?(?:(captureme)[\S\s]+?)?end