在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分解为其有意义的部分。

https://stackoverflow.com/a/1732454/2801860

回答:

我觉得你有一点逻辑问题, 以下的正则表达式会给你一个组中的每个开放表标签:

\s*(<table.*>) 

虽然不能结束标记匹配,你可以做什么只是在表格子项中连接结束标记,父母只是手动修复它

以上是 在java中使用正则表达式在html中查找每个表格元素 的全部内容, 来源链接: utcz.com/qa/264697.html

回到顶部