从开始到结束

时间:2019-03-03 15:38:35

标签: regex

这是测验练习

仅以文本开头匹配行,除非文本结尾在此之前(结尾可能在字符串中,也可能不在字符串中)。匹配:ssstarttt line并且不匹配line_end start

我尝试了代码

(?:.*?\s?start(?<!$).*\b|(?<!.)start|^\w+start)

结果返回

  

测试23/25:它不应该与结束开始,结束,开始,结束,开始,结束,开始或结束相符。

正则表达式demo

应匹配

ssstarttt行

重新启动

开始

aa start end start

不匹配

line_end开始

结束开始结束开始结束开始结束结束

1 个答案:

答案 0 :(得分:2)

如果文本开头应该在此处,但文本结尾不应在开始之前,那么一种选择是使用否定的前瞻来断言右边的不是end

^(?:(?!end).)*start.*

说明

  • ^字符串的开头
  • (?:非捕获组
    • (?!end).负向断言来断言右边没有结束并且匹配任何字符
  • )*关闭非捕获组并重复0次以上
  • start.*比赛开始,后接任意字符0次以上

regex101 demo