1

私はアルゴリズムの設計が苦手で、複雑な問題を抱えています。ぜひご覧ください。私は現在、Java/Groovy で作業しています。

次のようなテキストがあります。

AAAAA  
AAAAA
CCCCC
any stuff here  
111  
any stuff here  
AAAAA  
stuff  
AAAAA  
stuff  
AAAAA  

BBBBB  
stuff  
222  
stuff  
BBBBB   

私の課題は、周囲のテキストを取得せずに、AAAAAA のもの 111 のもの AAAAA の形式のすべての文字列を取得することです。文字列に複数の AAAAA があることがわかりますが、111 と 222 に最も近いものだけを取得し、このタイプのすべての文字列に対してこれを行う必要があります。

私の正規表現(機能していない)は次のようになります。

/(\w{8}|\w{11}).*?(\w{3}).*?\1/  

私はそれらの束で遊んでいますが、テキストを取得しすぎたり、パフォーマンスが遅すぎたりします...この種の問題に何を使用すべきか誰かが知っている場合は、お知らせください。

編集:これらは私が一致させようとしているものです:

AAAAA
CCCCC
any stuff here  
111  
any stuff here  
AAAAA  

BBBBB  
stuff  
222  
stuff  
BBBBB  

これは、不適切にタグ付けされた XML を解析するのとほとんど同じだと言えます。とにかく、見てくれてありがとう。

4

1 に答える 1

2

正規表現パターンを使用

(?s)\b(\w{5})\b(?:(?!\1).)*?\b\w{3}\b(?:(?!\1).)*?\1
于 2012-10-23T18:43:04.583 に答える