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