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

正则提取静态词后内容:匹配逗号或字符串结尾的问题

正则提取静态词后内容:指定逗号或字符串结尾为终止条件

场景说明

待处理字符串的顺序和数量会变化,但一定会出现Bob和Mike这两个名称,举几个例子:

  • "Bob: 44-51mL/kg/min, Mike: (Bodyweight)1.5 minutes"
  • "Mike: (Bodyweight)1.5 minutes"
  • "Mike: (Bodyweight)1.5 minutes, Bob: 44-51mL/kg/min"

现有问题

我之前用的正则是:

\Mike:?(\s.*?)?(,)|$

本来想以Mike为起点(冒号可选),提取到逗号或者字符串结尾,但现在只有字符串里有逗号时能生效,没逗号就提不出结果。

解决办法

问题出在正则的终止条件逻辑上,调整后的正则可以直接解决这个问题:

Mike:?\s*(.*?)(?=,|$)

简单解释下各部分作用:

  • Mike:?:匹配固定名称Mike,后面的冒号可选(满足有时没有冒号的情况)
  • \s*:匹配0个或多个空格,处理冒号后可能有空格的情况
  • (.*?):非贪婪模式匹配任意字符,专门用来捕获我们需要的内容
  • (?=,|$):正向预查,意思是匹配到逗号或者字符串结尾就停止,而且不会把逗号包含到提取结果里

如果需要同时提取Bob和Mike的内容,也可以把名称改成可选分组:

(Bob|Mike):?\s*(.*?)(?=,|$)

这样不管目标名称后面有没有逗号,都能正确提取到对应的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 06:01:01