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

Regex技术问题:如何捕获不含"-NEW"行中首个下划线前的内容?

解决方案:用负向预查实现需求

当然可以实现!这个需求刚好能通过正则的负向预查结合捕获分组轻松搞定,既能过滤掉包含-NEW的行,又能精准捕获目标内容。

最终正则表达式

^(?!.*-NEW)([^_]+)

正则拆解(逐部分解释)

  • ^:锚定到每一行的开头,确保我们从行首开始判断和匹配
  • (?!.*-NEW):这是关键的负向前瞻断言,作用是检查当前行从开头到结尾的任意位置都不包含-NEW字符串。如果行里有-NEW,这个断言会直接让整个正则匹配失败,也就不会产生捕获结果
  • ([^_]+):捕获分组1,匹配一个或多个不是下划线的字符,刚好对应第一个下划线之前的所有内容

测试验证

用你的示例逐个验证:

  • 行:skipme_garbage-NEW_nothing → 因为包含-NEW,负向预查不通过,正则无匹配结果,符合要求
  • 行:takeme_garbage_some-otherstuff → 无-NEW,分组1捕获到takeme
  • 行:takemetoo_some_more_garbage → 无-NEW,分组1捕获到takemetoo
  • 行:alsotakeme_0 → 无-NEW,分组1捕获到alsotakeme

注意事项

如果你的正则工具/语言支持多行模式(比如Python的re.MULTILINE、JavaScript的m标志),记得开启它,这样^才能正确锚定每一行的开头,而不是整个文本的开头。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:14:03