4

Javaで正規表現を逆にする方法は?たとえば、'ab。+de'=>'ed。+ba'です。

4

3 に答える 3

4

実際には、針よりも干し草の山を逆にする方がはるかに簡単です。また、MatcherCharSequence代わりにをString使用するため、をラップするだけで簡単なオーバーヘッドでこれを行うことができます(O(1)のJavaで文字列を逆にするStringための回答を参照してください)。

Matcherこの知識があれば、パターンを逆転させているように見える代替バージョンを作成できますが、実際には入力を逆転させているだけです。

于 2012-05-11T04:00:53.677 に答える
4

おお。

正規表現用のパーサーを作成し、すべてのトークン/パーツを逆にする必要があります。

この場合

ab。+deは

a、b、。+、d、e

逆にこれは

e、d、。+、b、a

今グループを想像してください

((ab)(。+ de))

逆は

((ed。+)(ba))

于 2012-05-11T04:06:28.817 に答える
0

Tiago Peczenyjは正しく、バックリファレンス、キャプチャグループ、および名前付きグループの両方を処理する必要があります。名前付きグループは、名前付きグループを名前で逆参照する必要があるというJava RegExの制限がないため、他のキャプチャグループと同様に番号で逆参照できます。

誰かがJavaソリューションに興味があるなら、私はまさにそれを行うためのライブラリを実装しました。https://github.com/vsch/reverse-regex

すべての有効なJava正規表現構造を処理し、パターン、マッチャー、および逆検索の入力をラップして、必要なすべてのマッピングと反転を処理するユーティリティクラスを提供します。

于 2017-01-14T19:37:04.253 に答える