我有一个包含以下几行的文件(简洁的示例,实际文件为1.000+行):
...
type1.value1=60 <-- replace 60 with 72 from line 5
type1.value2=15 <-- replace 15 with 14 from line 6
type2.value1=50 <-- replace 50 with 72 from line 5
type2.value2=18 <-- replace 18 with 14 from line 6
type3.value1=72
type3.value2=14
...
我想用type3的值替换type(x)的所有值。有很多类型/值组合,所以我想避免手工。另外,我必须经常这样做。
使用Notepad ++ Regex查找/替换是否可能?
匹配的表达式如下,其中第一个组应保持不变,而第二个组应由尚未使用正则表达式的结果替换。
^type1.([\w]+)=([\S]+)
答案 0 :(得分:3)
正则表达式:
type(?!3\.)\d+\.value(\d+)=\K\d+(?=[\s\S]*?type3\.value\1=(\d+))
替换为:
\2
说明:
type(?!3\.)\d+
匹配3
以外的其他类型\.value(\d+)=
将所有内容匹配到=
,但捕获数字\K
忘记了到目前为止的比赛\d+
匹配以下数字(?=
开始积极向前
[\s\S]*?
随意匹配所有内容type3\.value\1=
最多与type3
的值相同(\d+)
然后在CP#2中捕获其值)
正向超前结束该点与来自valueX
的{{1}}匹配type
,然后从3
寻找相同的valueX
。如果type3
是假设性的,或者没有什么特别值得关注的地方,那么就没有在查找/替换功能中使用正则表达式的纯方法。