仅以文本开头匹配行,除非文本结尾在此之前(结尾可能在字符串中,也可能不在字符串中)。匹配:ssstarttt line
并且不匹配line_end start
我尝试了代码
(?:.*?\s?start(?<!$).*\b|(?<!.)start|^\w+start)
结果返回
测试23/25:它不应该与结束开始,结束,开始,结束,开始,结束,开始或结束相符。
正则表达式demo
应匹配
ssstarttt行
重新启动
开始
aa start end start
不匹配
line_end开始
结束开始结束开始结束开始结束结束
答案 0 :(得分:2)
如果文本开头应该在此处,但文本结尾不应在开始之前,那么一种选择是使用否定的前瞻来断言右边的不是end
^(?:(?!end).)*start.*
说明
^
字符串的开头(?:
非捕获组
(?!end).
负向断言来断言右边没有结束并且匹配任何字符)*
关闭非捕获组并重复0次以上start.*
比赛开始,后接任意字符0次以上