You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用regex匹配指定词组后紧跟的字符串,解决短词为长词子串的问题

问题根因

你使用的正则(?<=the|these)\w+存在的问题是交替分支的匹配顺序错误:
绝大多数正则NFA引擎处理交替分支时会从左到右依次尝试,匹配到第一个符合条件的分支就会停止校验剩余分支。当匹配thesePeople时,字符串前3个字符刚好命中左侧的the分支,引擎就不会再校验更长的these分支,最终返回的匹配结果就是the后面的sePeople。

解决方法

只要把更长的匹配分支放到交替列表的最左侧,让引擎优先校验更长的前缀即可,修正后的正则如下:

@"(?<=these|the)\w+"

验证结果

  • 输入thesePeople:匹配到these作为前缀,返回结果People,符合预期
  • 输入theApple:匹配到the作为前缀,返回结果Apple,符合预期

如果需要适配更多长度不同的前缀词组,通用规则是所有前缀按长度从长到短排序后再写入交替分支,就能避免短前缀先匹配导致的问题。

内容的提问来源于stack exchange,提问作者Seaky Lone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 07:24:04