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