求PCRE2正则表达式:匹配所有"no"及首尾出现的"yes"
解决方案:匹配所有"no"及首尾"yes"的PCRE2正则
最终正则表达式
\b(?:no|yes(?!.*yes)|(?<!yes.*)yes)\b
正则逻辑解析
\b:单词边界,确保匹配完整的yes/no,避免误匹配包含这些字符的其他单词(?:...):非捕获分组,整合三种匹配规则no:直接匹配所有出现的no字符串yes(?!.*yes):匹配最后一次出现的yes,通过负向预查(?!.*yes)确保该yes之后没有其他yes(?<!yes.*)yes:匹配第一次出现的yes,通过负向回溯预查(?<!yes.*)确保该yes之前没有其他yes
测试用例验证
"no/yes":匹配结果为no、yes→ 符合预期"no/yes/word/yes/no":匹配结果为no、yes、yes、no→ 符合预期"yes/yes/no/word/yes":匹配结果为第一个yes、no、第三个yes→ 符合预期"yes/no/yes/yes":匹配结果为第一个yes、no、第三个yes→ 符合预期
内容的提问来源于stack exchange,提问作者klee
相关产品推荐
相关产品推荐

