java - 我如何使用java提取span的名称?

标签 java pattern-matching html

我需要编译一个模式以获得跨度的名称,但徒劳地我无法得到我想要的东西,可能是这个模式的编写方式我知道我做了一些不完全正确的事情..这是我的 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/

相关文章:

javascript - 从控制台检查元素

haskell - 为什么要解析错误?缩进?

java - 为什么我不能向 HashSet 添加对象

java - CQ5 JSP 在 global.jsp include 中抛出错误,为什么?

java - 直接读取 index.html 而不在 URL 中暴露其路径

mysql - MySQL Regexp 是否支持 Unicode 匹配

Scala Constructor 模式与 Extractor 模式匹配

javascript - 更改当前页面的颜色angularjs

html - 表单 CSS - 边距

java - 在窗口上打印数字数组