正则表达式查找和替换重复的术语

时间:2012-06-14 18:23:38

标签: regex replace repeat

我有一堆文本文件包含重复的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)项,重复的项用空格替换。

谢谢。

1 个答案:

答案 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实用程序。