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

如何用正则表达式提取字符串中$a、$b等标记后的子串?

解决正则提取$标记后子串的问题

正确正则表达式

使用非贪婪匹配结合正向预查,精准捕获每个$标记后的内容:

\$([a-z])(.*?)(?=\$[a-z]|$)

正则拆解

  • \$:匹配字面量$(需转义,因为$在正则中是行尾锚点)
  • ([a-z]):捕获$后的单个字母标记(如a、b、c)
  • (.*?):非贪婪模式匹配任意字符,避免过度匹配后续的$标记
  • (?=\$[a-z]|$):正向预查,匹配到下一个$+字母或者字符串结尾的位置,作为终止边界

匹配结果

对目标字符串 "$a477tr.: $bBìa mềm ; $c13x18.8cm" 应用该正则,会得到三组捕获结果:

  • 标记a对应内容:"477tr.: "
  • 标记b对应内容:"Bìa mềm ; "
  • 标记c对应内容:"13x18.8cm"

为什么之前的正则失效?

你之前的正则大概率使用了贪婪匹配的.*,它会尽可能匹配最长的字符序列,导致从$a开始一直匹配到字符串末尾,把$b和$c的内容也包含进去。换成非贪婪的.*?并配合正向预查,就能限制匹配范围到当前标记和下一个标记之间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:48:44