0

我需要编译一个模式才能获得跨度的名称但徒劳我无法拥有我想要的可能是这种模式的编写方式我知道我做了一些不完全正确的事情..这是我的html代码:

<span class="libelleAttributPageParametrage"> 
 "Libellé de facturation"
<font color="#C60307">*</font>
</span>

这是我的java代码:

 public List<String> getAllSpan()
{
    String HTMLSource = priceSelenium.getHtmlSource();
    priceSelenium.getBodyText();
    List<String> ListOfSpan = new ArrayList<String>();
    Pattern p = Pattern.compile( "<SPAN[^>]*>([\\w\\d\\s\\n\\r()/°@\\.\\-àáâãäåçèéêëìíîïðòóôõöùúûüýÿ]*)</SPAN>" );
    Matcher m = p.matcher( HTMLSource );
    while ( m.find() )
    {
        if ( !m.group( 1 ).isEmpty() )
        {
            ListOfSpan.add( m.group( 1 ) );
        }
    }
    return ListOfSpan;
}

我需要在我的 ListOfSpan 中拥有的是:“Libellé defacturation”

提前致谢

4

1 回答 1

1

如果要解析 HTML,则应使用 HTML 解析器库(例如jsoup)。这将为您提供一个表示 HTML 的对象图,您可以使用它导航到<span>您感兴趣的对象并调用类似spanElem.attr("name").

HTML 不是常规语言,因此严格来说不可能将其视为文本并尝试使用正则表达式提取部分。在简单的情况下它可能会工作一段时间,但它仍然可能涉及过于复杂的正则表达式,这对于某些有效的 HTML 将失败。 那种方式是疯狂的。

于 2012-08-02T08:30:39.133 回答