如何在记事本中所有行中的“ =”符号后替换特定字符

时间:2019-11-11 12:45:53

标签: regex notepad++ programmers-notepad

我的文件内容如下

abcd-12=jksjd-jkkj
xyzm-87=hjahf-tyewg-iuoiurew
zaqw-99=poiuy-12hd-jh-12-kjhk-4rt45

我想在等号的R.H.S上用'='后面的下划线符号替换hypen。

No of hypenated terms are variable in the lines, it can be 3 or 4 or 5

如何对整个文档执行此操作。左侧应该完好无损。

我想要的结果是:

abcd-12=jksjd_jkkj
xyzm-87=hjahf_tyewg_iuoiurew
zaqw-99=poiuy_12hd_jh_12_kjhk_4rt45

3 个答案:

答案 0 :(得分:3)

一种选择是在正则表达式模式下进行以下查找和搜索:

Find:    = ([^-]+)-([^-]+)$
Replace: = $1_$2

Demo

这里的策略是匹配并捕获出现在等式RHS上的连字符的两半。然后,用下划线分隔的两半替换。

编辑:

如果RHS确实有四个连字符,请使用:

Find:    = ([^-]+)-([^-]+)-([^-]+)-([^-]+)$
Replace: = $1_$2_$3_$4

答案 1 :(得分:2)

这将替换单次通过中的任意数量的连字符:

  • Ctrl + H
  • 查找内容:(?:=|(?!^)\G).*?\K-
  • 替换为:_
  • 检查 环绕
  • 检查 正则表达式
  • 取消检查 . matches newline
  • 全部替换

说明:

(?:             # non capture group
    =           # equal sign
  |             # OR
    (?!^)       # negative lookahead, make sure we are not at the beginning of a line
    \G          # restart from last match position
)               # end group
.*?             # 0 or more any character but newline, not greedy
\K              # forget all we have seen until this position
-               # a hyphen

屏幕截图(之前):

enter image description here

屏幕截图(之后):

enter image description here

答案 2 :(得分:0)

搜索:

(=[^-\r\n]+)-

替换为:

\1_

注意::反复搜索并替换,直到不再替换为止。

测试here