如何一次替换特定字符

时间:2017-10-10 15:25:36

标签: regex notepad++

我想在文本中使用正则表达式替换字符{'A': [3, 4, 7], 'B': [4, 9, 9], 'C': [3, 4, 5], 'D': [2, 2, 6], 'E': [6, 7, 9], 'F': [2, 4, 5]},这样就可以这样工作:

原文:-
替换后的文字:abcd-efg-hijk-lmno

正如您所看到的,我想从字符abcd-efg-hijk/lmno开始一次从结尾开始替换字符-

提前感谢任何提示

3 个答案:

答案 0 :(得分:4)

找到:-([^-]*)$

替换为:/$1

搜索模式:正则表达式

<强>解释

-         : a dash
([^-]*$)  : text with no dash, 
            zero or more times, 
            to the end of the line,
            put in the $1 variable
/$1       : literal "/", contents of $1

资源良好:http://www.grymoire.com/Unix/Regular.html

答案 1 :(得分:3)

要替换Notepad ++中的字符,可以使用 Ctrl + H 或“搜索”菜单下打开“替换”窗口。打开后,输入以下正则表达式:

(.{4}-.{3}-.{4})(-)(.{4})

这将找到:

  • 一组四个字符(“。”是任意字符,“{4}”是数量),
  • 短划线,
  • 一组三个字符,
  • 另一个破折号,
  • 一组四个字符,
  • 又一次冲刺,
  • 然后是一组四个字符。

括号将此搜索分组到捕获的组中,我们将将其用于替换部分。有关详细信息,请参阅https://www.regular-expressions.info/brackets.html

如果要将搜索范围限制为小写字母,则应替换“。”。用“[a-z]”或上下“[a-z,A-Z]”。

现在进行更换。之前的组由美元符号引用,然后是数字,例如1美元将是第一个。所以我们将替换第一组中的字符($ 1),忽略包含短划线的第二组并插入“/”,然后包括第三组($ 3):

$1/$3

替换窗口中的设置需要选中“正则表达式”和“自动换行”,并且“。匹配换行符”未选中。

然后,您可以单击替换所有以替换所有匹配项,或单独使用替换

由于不包括行字符的开头和结尾,您可以在一行中找到此模式的多次出现。

注意:此答案遵循与Toto相同的过程,但使用不同的正则表达式。

答案 2 :(得分:2)

  • 控制 + ħ
  • 找到:^(.+)-([^-]+)$
  • 替换为:$1/$2
  • 检查环绕
  • 检查正则表达式
  • 请勿检查. matches newline
  • 全部替换

<强>解释

^           : begining of line
  (.+)      : 1 or more any character, catch in group 1
  -         : a dash
  ([^-]+)   : 1 or more any character but dash, catch in group 2
$           : end of line