1

問題は次のとおりです。Javaクラス名と次のような追加情報を含むJavadocで生成されたHTMLファイルがあります。

{@link ml.foo.bar.BazAccEd} (Text) Some text
{@link ml.foo.bar.BazAccGrp} (Text) Some text BazAccGrpList
{@link ml.foo.bar.BazAccEdOrGroup} (Text) Some text {@link.ml.foo.bar.BazAccEdList}

上記のサンプルで生成されるように、Javaクラスの短い名前とリンクの一部である場所のみを(Ant正規表現機能を使用して)抽出し、元の通常のテキストの代わりにコンマを挿入する必要があります。

BazAccEd
BazAccGrp
BazAccEdOrGroup, BazAccEdList

おそらくそれほど複雑ではありませんが、リンクのみを解析してリンクから正しいデータを抽出する正しい正規表現に出くわすことはできません。前もって感謝します。

4

2 に答える 2

3

あなたが提供した入力を考えると、これはうまくいくはずです。ピリオドと右中括弧の間のテキストをキャプチャすることで機能します。

\.([A-Za-z\d_]+)(?=})(?:.+\.([A-Za-z\d_]+)(?=}))*

これにより、キャプチャされた 2 つのグループ\1とが返されます\2。カンマ置換を正しく機能させるには、 に何かがあるかどうかを確認する必要があります\2\1その場合は、 と の間にカンマを挿入してください\2

説明:

\.([A-Za-z\d_]+)(?=}) # look for a period, characters, and lookahead for closing curly brace. Capture the characters
(?:          # open a non-capturing group
.+           # gobble up characters until ...
\.([A-Za-z\d_]+)(?=}) # ... you find the same thing as in the first line above
)*           # make the non-capturing group optional
于 2012-05-09T12:29:03.330 に答える
1

その正規表現を使用できます。

{@link[ .][a-zA-Z] .[a-zA-Z] .[a-zA-Z] .([AZa-z0-9] )}

于 2012-05-09T12:28:07.943 に答える