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

正则表达式问题:如何从指定位置单次匹配无下划线目标字符串

解决方案说明

首先明确:无法通过单次正则匹配直接得到目标字符串R2345678,因为目标字符串是原字符串中从第4位开始移除所有下划线后的结果,这些字符在原字符串里并非连续的片段——正则的核心匹配逻辑是抓取连续的字符序列,单纯靠匹配模式做不到跨非目标字符的聚合。

你可以通过两种方式实现需求:

方式一:正则替换(更直接)

先截取从第4位开始的部分,再替换掉所有下划线:

  • 第一步用正则^.{3}\K.*匹配从第4位到结尾的内容,得到R23_4_56_78
  • 第二步把这部分里的所有下划线替换为空,即可得到R2345678

部分支持高级替换逻辑的正则引擎可以一步完成:用^.{3}(.*)匹配整个字符串,捕获从第4位开始的所有内容,再在替换阶段移除捕获组里的下划线。比如JavaScript中的写法:

"W1_R23_4_56_78".replace(/^.{3}(.*)/, (_, group) => group.replace(/_/g, ''))

方式二:提取后代码处理

先提取原字符串从第4位开始的子串,再通过代码逻辑移除所有下划线。比如Python中的写法:

s = "W1_R23_4_56_78"
result = s[3:].replace("_", "")

你之前用的正则^.{3}\K.[^_]*只能匹配到R23,是因为[^_]*会匹配到第一个下划线前的所有非下划线字符,这完全符合该正则的设计逻辑,本身没有问题,只是和你的需求不匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 05:25:17