0

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

谢谢你。

4

1 回答 1

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

于 2012-06-14T18:35:50.620 回答