Notepad++:我可以使用正则表达式查找一些值并只删除一个字符而不是整个模式吗?

Notepad++: Can I use regex to find some values and remove only one character instead of the whole pattern?

我想在记事本中使用正则表达式来查找此模式:"[0-9]+[\.][0-9]+[,][0-9]+" 例如1.010,80260 但是,从这些数字中,我只想删除“。” ,所以新值应该是 1010,80260 。 到目前为止,我只能替换整个模式。有办法吗?

提前致谢!

将正则表达式更改为:([0-9]+)[\.]([0-9]+[,][0-9]+)

() 部分是组,您可以在第一组替换为 </code>,第二组替换为 <code> 中参考。

文档也在此处对此进行了解释:https://npp-user-manual.org/docs/searching/#substitution-grouping(比我在此答案中的用法更好,更详细...)

编辑:我只是想分享在 Notepad++ 7.9.5 中显示 'Replace' 的动画 gif。好像不行。

您可以使用 \K,它基本上是说丢弃在该点之前匹配的任何内容,然后添加前瞻性。像这样

[0-9]+\K\.(?=[0-9]+[,][0-9]+)

您可以使用 \K 元转义,因为 PCRE 不支持可变宽度回顾:

正则表达式:

[0-9]+\K[\.](?=[0-9]+[,][0-9]+)
  • [0-9]+ - 捕获数字
  • \K - 忘记我们捕获的内容
  • [\.] - 捕获一个句点;只需 \. 即可,不需要 char class 括号
  • (?=[0-9]+[,][0-9]+) - 在我前面应该是数字后跟一个逗号和数字

替换为:


\K 在 Notepad++ 中存在错误,因此您可以改用此正则表达式,因为您只关心句点后面至少有一位数字:

(?<=\d)\.(?=[0-9]+[,][0-9]+)