0

m と n が徐々に増加する数値である、繰り返される P(m,n) 項を含むテキスト ファイルの山があります。繰り返し出現する用語を見つけて正規表現に置き換えるにはどうすればよいですか?

ここに例があります。次のテキストが必要です。

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

これは、(上記の Regex Hero の例のように) RegexOptions.RightToLeft を使用した .NET でのみ機能することに注意してください。

したがって、この作業を行う重要な部分は(?<=\1.+)、正規表現の後半で定義されたグループ #1 のインスタンスを探す肯定的な後読みです。そして、一致を空の文字列に置き換えるだけです。


一連のファイル内のテキストを置き換えるには、Regex Hero Grepユーティリティを使用します。

于 2012-06-14T18:35:50.620 に答える