Regex 先发制人 这是一个测验练习
仅将行与文本开始匹配,除非文本结束在该行之前(结束可能在字符串中,也可能不在字符串中)。匹配:Regex 先发制人 这是一个测验练习,regex,Regex,仅将行与文本开始匹配,除非文本结束在该行之前(结束可能在字符串中,也可能不在字符串中)。匹配:ssstarttt行和不匹配line\u end start 我试过密码 (?:.*?\s?start(?<!$).*\b|(?<!.)start|^\w+start) (?:.*\s?开始(?)? 结果返回 测试23/25:它不应该与结束-开始匹配 正则表达式 应匹配 ssstarttt线路 埃斯塔特 开始 aa开始结束开始 不应匹配 线路结束-开始 结束-开始-结束-开始如果文本开始应
ssstarttt行
和不匹配line\u end start
我试过密码
(?:.*?\s?start(?<!$).*\b|(?<!.)start|^\w+start)
(?:.*\s?开始(?)?
结果返回
测试23/25:它不应该与结束-开始匹配
正则表达式
应匹配
ssstarttt线路
埃斯塔特
开始
aa开始结束开始
不应匹配
线路结束-开始
结束-开始-结束-开始如果文本开始应该在那里,但文本结束不应该在开始之前,一个选项是使用负前瞻来断言右侧的内容不是结束
^(?:(?!end).)*start.*
解释
^
字符串的开头
(?:
非捕获组
(?!end)。
断言右边的内容不是end并匹配任何字符的负向前看
)*
关闭非捕获组并重复0多次
开始。*
匹配开始,后跟任意字符0+次
测试17/25:它应该匹配aaa开始-结束-开始。现在,你应该想知道是否必须将它锚定到^。如果你锚定了它,如何在前瞻中判断它是否在开始之前。尝试使你的模式从一开始就一个字符一个字符地匹配,并在遇到结束时使其失败。提示:/(?!结束)/