正则表达式 - 替换Java中标记之间的所有字符串

时间:2017-12-12 13:43:51

标签: java regex

我需要从字符串中提取字符串。该字符串包含html-tags。

以下是一个示例字符串:

<span class="artist-name">John Doe</span> <span class="artist-instrument">Violin</span>

我需要的只是名字(John Doe)。名称和工具各不相同。我试过以下正则表达式不起作用:

/\<span[ ]class=\"artist-name\"\>(.*?)\<\/span\>/si

我正在使用基于Java的CMS的FirstSpirit。

谢谢!

2 个答案:

答案 0 :(得分:0)

一个选项可能是使用专用库:Jericho HTML http://jericho.htmlparser.net/docs/index.html,特别是此代码:http://jericho.htmlparser.net/samples/console/src/ExtractText.java

这可能是比自定义正则表达式更好的解决方案,已知这些正则表达式难以维护。

答案 1 :(得分:0)

代码将字符串分隔为&lt;和&gt;,并通过查看HTML元素的其余部分来查找相关字符串。

    String toTest = "<span class=\"artist-name\">John Doe</span>";
    String[] split = toTest.split("<|>");
    for(int i = 0; i < split.length-1; i++){
        if(split[i].equals("span class=\"artist-name\"")){
            System.out.println(split[i+1]);
        }
    }