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

如何用正则提取$数字后、下划线或行尾前的目标单词?

如何用正则提取所有行中的foobar?

需求场景

需要从以下行中提取指定单词foobar:

something_something_$20_foobar
something_something_$20_foobar_something
something_something_something_$20_foobar_something
something_something_$1.5_foobar
something_something_$1.5_foobar_something

已知规则

foobar必然出现在**下划线+带美元符号的数字(整数或浮点数)**之后,其后方要么是另一个下划线,要么是行尾。

之前尝试的问题

  • 使用\$.+_(.+)$:仅能匹配第1、4行的foobar
  • 使用\$.+_(.+)_:仅能匹配第2、3、5行的foobar
  • 使用\$.+_(.+)[$_]或\$.+_(.+)($|_):要么只能匹配部分行,要么匹配到错误内容

解决方案

可以使用这个正则表达式匹配所有行中的foobar:

\$\d+(?:\.\d+)?_(\w+)(?=_|$)

正则解释

  • \$:匹配美元符号(转义是因为$在正则中是行尾锚点)
  • \d+(?:\.\d+)?:匹配整数或浮点数,(?:\.\d+)?表示可选的小数部分,(?:...)是非捕获组,不占用分组资源
  • _:匹配数字后的下划线分隔符
  • (\w+):捕获目标单词foobar(\w+匹配字母数字下划线,完全适配foobar的格式)
  • (?=_|$):正向预查,确保foobar后方要么是下划线,要么是行尾,避免捕获后续多余内容

如果需要更精准的匹配(仅针对foobar),可以把捕获组改为精确匹配:

\$\d+(?:\.\d+)?_(foobar)(?=_|$)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 03:57:35