-1

我面临这个问题:

我有一个包含一些奇怪的 HTML 内容的字符串,比如

String result = "<div id=\"foo\"><div class=\"bar\">xyz</div><div id=\"alert\"><strong>Foo Bar 2% foobar.</strong></div></div>"

(这个字符串比这个例子还要大。它包含一个完整的网页。)

我现在的问题是:

  1. 找到线<div id="alert"><strong>Foo Bar 2% foobar.</strong></div>
  2. 提取那里的数字(数字)2(这可能是[0-9]{1,3})。

我的尝试:

String pattern = "<div id=\"alert\"><strong>(.+) (\\d{1,3})% (.+)</strong></div>";
Matcher matcher = Pattern.compile(pattern).matcher(result);
while(matcher.find()) {
    Log.i(TAG, "" + matcher.group();
}

但这不会抛出预期的结果(我会除外:)2

我主要用PHP开发,所以处理(preg_match)没有问题,但我不知道如何在Java中做到这一点。

谢谢!

4

1 回答 1

1

使用 jsoup 从 html 标签中提取内容。然后您可以对提取的字符串使用正则表达式。

从下载 jsoup

http://jsoup.org/download

    String url = "<div id=\"foo\"><div class=\"bar\">xyz</div><div id=\"alert\"><strong>Foo Bar 2% foobar.</strong></div></div>";
    Document doc = Jsoup.parse(url);  
    Elements elements = doc.select("strong");
    String s= elements.text();
    Pattern p = Pattern.compile("[0-9]{1,3}");
    Matcher m = p.matcher(s); 
    while (m.find()) {
       String result =m.group();
    }
于 2013-06-24T14:08:55.833 回答