我需要编译一个模式,以便拥有跨度的名称,但是徒劳无法,我不能拥有我想要的可能是这种模式写的方式我知道我做了一些不完全正确的东西..这是我的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”
提前致谢
答案 0 :(得分:1)
如果要解析HTML,则应使用HTML解析器库(例如jsoup)。这将为您提供一个表示HTML的对象图,您可以使用该图导航到您感兴趣的<span>
对象,并调用类似spanElem.attr("name")
的内容。
HTML不是常规语言,因此将其视为文本并尝试使用正则表达式提取部分并非严格可行。它可能在一些简单的情况下工作一段时间,但它仍然可能涉及过于复杂的正则表达式,这对于某些有效的HTML会失败。 That way lies madness