Notepad ++正则表达式替换为来自同一文件的捕获

Har*_*per 6 regex notepad++

我有一个包含以下行的文件(精简示例,真实文件是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
...
Run Code Online (Sandbox Code Playgroud)

我想用type3中的值替换type(x)中的所有值.有很多类型/价值组合,所以我想避免手工.此外,我必须经常这样做.

这可能与Notepad ++ Regex查找/替换?

匹配表达式如下,其中第一个组应该保持不变,第二个组应该替换为anoter regex的结果.

^type1.([\w]+)=([\S]+)
Run Code Online (Sandbox Code Playgroud)

rev*_*evo 3

正则表达式:

type(?!3\.)\d+\.value(\d+)=\K\d+(?=[\s\S]*?type3\.value\1=(\d+))
Run Code Online (Sandbox Code Playgroud)

用。。。来代替:

\2
Run Code Online (Sandbox Code Playgroud)

解释:

  • type(?!3\.)\d+匹配除以下类型之外的类型3
  • \.value(\d+)=匹配所有内容,=但捕获数字
  • \K忘记到目前为止的比赛
  • \d+匹配以下数字
  • (?=正向前瞻的开始
    • [\s\S]*?懒惰地匹配任何东西
    • type3\.value\1=直到相同的值type3
    • (\d+)然后在 CP #2 中捕获其值
  • )正向前瞻结束

现场演示

重点是valueXtype不同的地方匹配3然后从不同的地方寻找相同的valueX地方type3。如果valueX是假设的或者没有任何特殊的东西需要查看,那么就没有在查找/替换功能中使用正则表达式的纯粹方法。