在java中使用正则表达式在html中查找每个表格元素
问题描述:
我有一个html作为字符串。我想用正则表达式找到每个表格元素(开关标签)。我尝试了<table(.*?)>.*</table>
模式。但它不起作用,因为它匹配第一个表格打开标签和最后一个表格关闭标签之间的东西。在java中使用正则表达式在html中查找每个表格元素
这里是我的代码:
Pattern pattern = Pattern.compile("<table(.*?)>.*</table>");
而且我已经试过:
Pattern pattern = Pattern.compile("<table(.*?)>.*</table>",Pattern.DOTALL);
这里有一个实例:
<table id="table1">
</table>
<table id="table2">
<table id="table3">
</table>
</table>
我的模式找到所有<table id="table1">
之间的所有元素打开标签和table2的关闭标签。
但我希望它匹配每个表元素与它的标签。例如:table1的开闭标签,table2的开闭标签..
感谢您的回答。
答
我认为没有很好的解决方案来解决您的问题。 因为你不能用正则表达式解析HTML。
看看这个答案:
正则表达式是一种工具,是不够成熟的理解通过HTML所采用的结构。 HTML不是一种常规语言,因此不能用正则表达式进行分析。正则表达式查询不能将HTML分解为其有意义的部分。
解析HTML正则表达式被认为是不好的做法。您应该使用复杂的HTML解析器。请参阅[使用正则表达式来解析HTML:为什么不?](https://stackoverflow.com/questions/590747/using-regular-expressions-to-parse-html-why-not) – vanje