1

I like to extract text from html page using regular expressions. Here is my code:

String regExp="<h3 class=\"field-content\"><a[^>]*>(\\w+)</a></h3>";
    Pattern regExpMatcher=Pattern.compile(regExp,Pattern.UNICODE_CHARACTER_CLASS);

    String example="<h3 class=\"field-content\"><a href=\"/humana-akcija-na-kavadarechkite-navivachi-lozari\">Проба 1</a></h3><h3 class=\"field-content\"><a href=\"/opshtina-berovo-ne-mozhe-da-sostavi-sovet-0\">Проба 2</a></h3>";
    Matcher m=regExpMatcher.matcher(example);
    while(m.find())
    {

        System.out.println(m.group(1));
    }

I like to get the values Проба 1 and Проба 2. However I only get the first value Проба 1. What is my problem?

4

2 回答 2

5

使用正则表达式 + HTML 是亵渎神明。但是,如果您真的想被诅咒,那么这里就是(您已被警告):


String regExp = "<h3 class=\"field-content\"><a[^>]*>([\\w\\s]+)</a></h3>";
                                                       ^updated part

因为Проба 1andПроба 2还包含您需要包含\\s在模式中的空格。

于 2013-06-09T21:20:01.127 回答
1

要发现黑暗面的力量,您可以尝试以下模式:

<h3 class=\"field-content\"><a[^>]*>([^<]+)</a></h3>

不要忘记之前设置UNICODE_CASE。

于 2013-06-09T21:25:55.723 回答