【问题标题】:Using regex replacement in Sublime 3在 Sublime 3 中使用正则表达式替换
【发布时间】:2020-09-17 12:42:57
【问题描述】:

我正在尝试使用正则表达式在 Sublime 中使用替换,但我被卡住了。我尝试了各种组合,但似乎没有成功。

这是输入和我想要的输出:

输入:N_BBP_c_46137_n

输出:BBP

我尝试了以下组合:

[^BBP]+\b
\*BBP*+\g

但以上所有方法(以及许多其他方法)似乎都不起作用。

【问题讨论】:

  • 如果你已经知道BBP,为什么还要解压呢?
  • 只想将整个长名称(例如 N_BBP_*)替换为仅 BBP;对于大量此类数据,我必须这样做
  • (N_)[^_]*(_c_46137_n) -> ${1}some new value$2?
  • \bN_(BBP)_\S* 并替换为组 1 $1
  • 太棒了!这行得通;现在只是为了确认,我可以用 \d 替换数字 46137 因为它会因每种情况而异; _n 和 all 也会有所不同吗?那么如何让这个更通用呢?

标签: regex replace sublimetext3 regexp-replace


【解决方案1】:

要将N_BBP_c_46137_n 转换为BBP 并根据评论只想将整个长名称(例如N_BBP_)替换为仅BBP*,您还可以使用捕获组来保留BBP .

\bN_(BBP)_\S*
  • \bN_匹配 N 前面有一个单词边界
  • (BBP) 捕获组 1,匹配 BBP(或使用 [A-Z]+ 匹配 1+ 个大写字符)
  • _\S* 匹配 _ 后跟 0+ 次非空白字符

在替换中使用第一个捕获组$1

Regex demo

【讨论】:

    【解决方案2】:

    你可以使用

    (N_)[^_]*(_c_\d+_n)
    

    替换为${1}some new value$2

    详情

    • (N_) - 第 1 组($1${1},如果下一个字符是数字):N_
    • [^_]* - 除_ 之外的任何 0 个或多个字符 -(_c_\d+_n) - 第 2 组 ($2):_c_,一位或多位数字,然后是 _n

    请参阅regex demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-25
      • 1970-01-01
      • 2017-09-02
      • 2021-07-01
      • 1970-01-01
      • 2016-12-01
      • 1970-01-01
      相关资源
      最近更新 更多