我有一堆文本文件包含重复的P(m,n)项,其中m和n逐渐增加数字。如何使用正则表达式[最好使用Funduc的Studio Pro或Windows 7上的Notepad ++]查找和替换重现的术语?
这是一个例子。我想要以下文字:
P(1,1)aaa P(1,1)bbb P(1,2)bbbbb P(1,3)ccccc P(2,1)ddddd P(2,2)kkk P(2,2)jjj P(2,2)lll P(2,3)rrr ....
变成:
P(1,1)aaa bbb P(1,2)bbbbb P(1,3)ccccc P(2,1)ddddd P(2,2)kkk jjj lll P(2,3)rrr ....
请注意,只留下第一个新的P(m,n)项,重复的项用空格替换。
谢谢。
答案 0 :(得分:1)
由于您只想保留第一个实例,因此.NET的RightToLeft选项在这里派上用场。
以下是我提出的建议:
(?<=\1.+)(\bP\(\d+,\d+\)\s?)
http://regexhero.net/tester/?id=0b5257ff-f048-45da-b7b5-39e86d69d46b
请注意,这仅适用于使用RegexOptions.RightToLeft的.NET(如上面的Regex Hero示例)。
因此,使这项工作的关键部分是(?<=\1.+)
,这是一个积极的观察,它寻找在正则表达式的后半部分中定义的组#1的实例。然后你只需用空字符串替换匹配。
要替换一堆文件中的文本,请使用Regex Hero Grep实用程序。