我有一个包含以下几行的文件(简洁的示例,实际文件为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++正则表达式可以找到/替换吗?
匹配的表达式如下,其中第一组应保持不变,而第二组应由更正则表达式的结果代替。
^type1.([\w]+)=([\S]+)
最佳答案
正则表达式:
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 )
正向超前结尾Live demo
关键是要从不同于
valueX
的type
匹配3
,然后从valueX
寻找相同的type3
。如果valueX
是假设的,或者没有什么特别的值得关注的地方,那么在查找/替换功能中就没有使用正则表达式的纯方法。关于regex - Notepad++正则表达式替换为来自同一文件的捕获,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52092800/