使用正则表达式java从html源中提取文本

时间:2013-06-09 21:06:32

标签: java regex

我喜欢使用正则表达式从html页面中提取文本。这是我的代码:

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));
    }

我想获得值Проба 1Проба 2。但是我只得到第一个值Проба 1。我的问题是什么?

2 个答案:

答案 0 :(得分:4)

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


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

由于Проба 1Проба 2也包含空格,因此您需要在模式中加入\\s

答案 1 :(得分:1)

要发现黑暗面的力量,你可以尝试这种模式:

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

不要忘记之前设置UNICODE_CASE。