regex - 如何在 Notepad++ 中替换组的正则表达式

标签 regex replace notepad++

我有一些这样的文字:

1|Some things|US|192||||||1||
2|Some other things|US|128|3|||5|1|1|3|
3|Whatever else|US|128||15||||||

我想在 Notepad++ 中将其替换为以下内容:

1|Some things|US|192|+++++1++
2|Some other things|US|128|3+++5+1+1+3+
3|Whatever else|US|128|+15++++++

但我找不到合适的方法来做到这一点。我设法构建了一个与字符串匹配的正则表达式:US\|(\d+)\|((\d*)\|)+但我找不到如何构建替换字符串来匹配这种组组方法。

对我来说最困难的部分是排除“US”之后的第一个数字。我能看到的唯一出路是替换 (?<![a-zA-Z])\|(?![a-zA-Z])对于 +然后替换 US\|(\d+)\+返回US|\1| .

是否可以使用Notepad++的内置或TextFX的替换工具进行这样的替换?

最佳答案

您可以使用此模式:

(?:\G(?!^)|\|US\|\d+\|)\d*\K\|

使用 + 作为替换字符串。

对于每一行,场景都是相同的:

  • 第一个匹配使用交替的第二个分支:\|US\|\d+\| 并匹配第一个管道
  • 其他匹配使用带有 \G anchor 的第一个分支,以确保连续性。
  • 当到达最后一个管道时,连续性被破坏,第一个分支不能再成功。

\K 功能会从匹配​​结果中删除所有先前匹配的字符,并且仅替换管道。

关于regex - 如何在 Notepad++ 中替换组的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47100096/

相关文章:

c# - 匹配行尾或其他字符

regex - Notepad++ 查找和替换数字正则表达式

regex - 如何在 Notepad++ 中进行非贪婪的正则表达式查询?

php - 不区分大小写的自定义replace()函数

python - 如何使用正则表达式或替换来清理列表?

vba - Trim() 不适用于表格

html - Notepad++ 键盘快捷键,轻松编写 HTML 代码

c++ - ascii 字符时正则表达式意外结束

javascript - 具有至少 3 个字母的正则表达式并允许数字和特殊字符

正则表达式使用通配符验证网址?