1

私はこの正規表現を持っています:

<a href(.*foo.bar.*)a>

この文字列の場合、一致するのは 1 つだけですが、3 つの一致が必要です。

<a href="https://foo.bar/1">First</a> RANDOM TEXT COULD BE HERE <a href="https://foo.bar/2">Second</a> RANDOM TEXT COULD BE HERE <a href="https://foo.bar/3">Third</a>

だから、それぞれa hrefが個性的であるべきです。

どうすればこれを達成できますか?

編集:

このコードは一致を検索します。

Pattern pattern = Pattern.compile("<a href(.*foo.bar.*)a>");
Matcher matcher = pattern.matcher(body);
List<String> matches = new ArrayList<String>();
while (matcher.find()) {
    matches.add(matcher.group());
}
4

3 に答える 3

6

への変更:

<a href(.*?foo\.bar.*?)a>

貪欲さを取り除きます。そして、実際のドットは にエスケープする必要があります\.

于 2013-06-27T06:59:48.187 に答える
1

.*?の代わりに使用し.*ます。貪欲な量指定子はできるだけ多くの文字に一致しますが、消極的な量指定子は 1 回の検索操作で最小数の文字に一致します。

また、foo\.bar「foo.bar」のリテラル テキストに一致させる場合に使用します。

于 2013-06-27T07:22:01.997 に答える