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

如何使用Regex匹配每行第一个[之前的-字符,适配GNU sed替换需求

GNU sed实现方案

替换命令(示例将-替换为_,可自行修改为目标字符)

sed -E ':loop; s/^([^[]*)-/\1_/; t loop' 目标文件路径

逻辑说明

  • 用:loop定义循环标签,t loop表示上一次替换成功时跳转回标签重复执行,直到没有可替换的内容为止
  • 替换规则s/^([^[]*)-/\1_/中:
    • ^([^[]*)捕获行首到第一个[之间的所有非[字符,存入分组1
    • 仅匹配分组1后的第一个-,替换后保留分组1内容,仅修改目标-
    • 循环执行后会把第一个[之前的所有-全部替换完成,不会改动方括号内部的内容

匹配(非替换)场景用正则

如果仅需要提取匹配的-,不需要替换,可使用兼容PCRE的工具(比如GNU grep),正则如下:

-(?=[^[]*\[)

该正则通过正向预查,仅匹配后面跟着「若干非[字符 + 第一个[」的-,完全符合匹配需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:45:05