这是一些实际工作的 Java7 代码http://ideone.com/PWv56h
class Main
{
public static void main (String[] args) throws java.lang.Exception
{
String test = "testing 1 2 3 <a title=\"a demo\" href=\"\">testing 4 5 6</a> testing\t7\n8\r9 <br /><script src=\"blah\" />more text";
java.util.regex.Matcher m = java.util.regex.Pattern.compile("(<(?<tag>[A-Za-z]+)[^>]*?>[^<]*</\\k<tag>>)|(<[A-Za-z]+[^>]*?/>)|([^\\p{Space}]+)").matcher(test);
while(m.find())
System.out.println(m.group());
}
}
正则表达式匹配 3 个不同的组
- 带有结束标记 <a blah>blah</a> 的 HTML 标记
- 一个没有结束标签的 HTML 标签 <script src="blah" />
- 一段没有空格的文本
如果 HTML 是正确的并且 HTML 实体被正确转义,那么上面的正则表达式匹配器应该可以正常工作。即使在凌乱的 HTML 中,它也会快速且相当准确。