我正在寻找一个以以下内容开头--
并结束的正则表达式:
- 发现另一个
--
(必须包括在内), - 或者发现行尾。
对于带有行尾的版本,它可以与--[^\n]*
或一起使用--.*$
,对于以它结尾的版本,--
它可以与一起使用--[^\n]*--
,但我无法设法将两者结合起来,以便如果--
发现另一个,它不会占用该行的其余部分。
例如:
toto -- tata yoyo
将匹配-- tata yoyo
toto -- tata -- yoyo
将匹配-- tata --
编辑:根据@duDE的评论,我尝试过--[^\n]*(--|.*)
但.*
似乎赢了,--
因为在第二个示例中结果匹配是-- tata -- yoyo
编辑2:感谢@guest,我找到了答案,这很简单--.*?(--|$)
注意:顺便说一下,我使用https://www.debuggex.com/测试正则表达式,我发现这是一个很棒的工具,并且,即使例如使用--[^\n]*(--|.*)
正则表达式并且toto -- tata -- yoyo
它返回“不匹配”,我们也可以看到-- tata -- yoyo
部分匹配,因为突出显示了。
谢谢
答案1
答案2
也许类似于^.*(\<|$)
(从行首到单词首/行末的任何内容)...
答案3
感谢@guest对我的问题进行了评论,我找到了答案,很简单--.*?(--|$)
答案4
为了完整起见,正确答案是
--.*?(--|$)
https://regex101.com/r/8mDFeE/1
.*?
(vs )是.*
该模式的非贪婪版本——捕捉最低限度下一个匹配的字符数,而不是最大值。