0

Java 文字列内の URL の数をカウントしようとしています。

String test = "This http://example.com is a sentence https://secure.whatever.org that contains 2 URLs.";
String urlRegex = "<\\b(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]>";
int numUrls = 0;
pattern = Pattern.compile(urlRegex);
matcher = pattern.matcher(test);
while(matcher.find())
    numUrls++;
System.err.println("numUrls = " + numUrls);

これを実行すると、文字列に URL がゼロ (2 つではありません) であることがわかります。理由についてのアイデアはありますか?前もって感謝します!

4

2 に答える 2

5

<との>文字urlRegexが、 pattern と input の間に不一致を引き起こしていますtest String。それらを削除すると、意図したとおりのnumUrls値が得られます。2

于 2013-03-19T18:58:36.750 に答える
0

このコードを試してください:

        String data = "This http://example.com is a sentence https://secure.whatever.org that contains 2 URLs.";

    Pattern pattern = Pattern.compile("[hH][tT]{2}[Pp][sS]?://(\\w+(\\.\\w+?)?)+");
    Matcher matcher = pattern.matcher(data);

    while (matcher.find()) {
        System.out.println(matcher.group());
    }

うまくいけば、それはうまくいくでしょう。

于 2013-03-19T19:20:59.220 に答える