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

如何修改正则表达式仅匹配START标记后的CustomerName分组?

解决方案

最终正则表达式

(?s)(?:\G(?!^)|START).*?(?<=Mr\s)(?<CustomerName>.*?)\b

需开启的模式

  • 全局模式(g):匹配所有符合条件的结果,而非仅第一个
  • 单行模式(s):让.匹配换行符,支持跨多行匹配START之后的内容
  • 多行模式(m):配合\G锚点实现连续匹配(部分正则引擎中\G已支持跨行,按需启用即可)

正则逻辑拆解

  • (?s):启用单行模式,允许.匹配换行符,确保能覆盖START之后的多行内容
  • (?:\G(?!^)|START):定位匹配起点,要么是上一次匹配的结束位置(\G(?!^)排除文本开头的无效匹配),要么是匹配到START标记
  • .*?:非贪婪匹配START(或上一次匹配结束)到目标Mr 之间的所有内容,避免跳过符合条件的条目
  • (?<=Mr\s):正向后顾断言,确保目标内容前是Mr ,避免误匹配其他包含Mr的无关文本
  • (?<CustomerName>.*?)\b:捕获CustomerName分组,非贪婪匹配到单词边界,避免抓取多余字符

匹配结果

对给定文本执行后,将得到两个符合要求的分组结果:

  • 分组CustomerName: Correct1 Smith
  • 分组CustomerName: Correct2 Smith

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 18:31:16