You need to enable JavaScript to run this app. 正则表达式在regex101运行正常但sed中执行失效问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

正则表达式在regex101运行正常但sed中执行失效问题咨询

问题原因

  • 最核心的问题是 sed 所使用的 POSIX 扩展正则规范不支持非贪婪匹配语法(也就是你写的 .+? 里的 ? 非贪婪标记)。你在正则测试平台上用的是 PCRE 正则引擎,天然支持非贪婪匹配所以运行正常,但在 sed 中,.+? 会被解析为「匹配1次及以上任意字符 + 匹配字面量问号」,完全达不到你要的「匹配到第一个空格就停止」的效果。
  • 你命令末尾加的 g 全局替换标记也是多余的,行首匹配只会执行一次,不需要加这个参数。

正确实现方案

把非贪婪匹配的逻辑换成 POSIX 正则支持的写法即可:用 [^ ] 匹配所有非空格字符,直接匹配到第一个空格为止,不需要用非贪婪标记。
对应的正确命令如下:

echo "50G This is a Test (0000) 1234p (String).ext" | sed -E 's|^[^ ]* ||'

如果你还是想用捕获组的写法,也可以改成:

echo "50G This is a Test (0000) 1234p (String).ext" | sed -E 's|^[^ ]* (.*)|\1|'

两种写法执行后都能得到你预期的输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 06:54:02