我有一些这样的文字:
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*)\|)+
的RegExp,但我找不到如何构建替换字符串以匹配这种组组方法。
对我来说,困难的部分是排除“美国”之后的第一个数字。我能看到的唯一出路就是将(?<![a-zA-Z])\|(?![a-zA-Z])
替换为+
,然后将US\|(\d+)\+
替换回US|\1|
。
是否可以使用Notepad ++的内置或TextFX的替换工具进行替换?
答案 0 :(得分:4)
您可以使用此模式:
(?:\G(?!^)|\|US\|\d+\|)\d*\K\|
以+
作为替换字符串。
对于每一行,情况都是相同的:
\|US\|\d+\|
并匹配第一个管道\G
锚来确保连续性。 \K
功能会从匹配结果中删除所有先前匹配的字符,并且仅替换管道。