我有一个html页面,我需要解析它有很多嵌套表。
<table> <table> <table > Status </table> </table> </table>
<table> <table> </table> </table>
我正在尝试创建一个Java正则表达式模式,仅匹配文本
<table> Status </table>
我也尝试过像Jsoup这样的html解析器,但是找不到一个干净的解析方法。我一直在打破这个问题,但无法干净地提取这段文字。有关使用Java正则表达式模式/ jsoup的任何帮助表示赞赏。
答案 0 :(得分:1)
<table\s*>\s*(([^<]|<[^t]|<t[^a]|<ta[^b]|<tab[^l]|<tabl[^e])*?)\s*</table\s*>
您可以获取第一个捕获的组(正则表达式(
和)
之间匹配的内容)以获取<table>
和</table>
之间的内容(在您的第一个中)示例状态)。
说明:
我们搜索以:
开头的字符串<table\s*>\s* (\s* is for any number of blank spaces)
包含除序列<table
之外的任何内容:
([^<]|<[^t]|<t[^a]|<ta[^b]|<tab[^l]|<tabl[^e])*
结束时:
\s*</table\s*> (\s* is for any number of blank spaces)
我们搜索<table>
和</table>
之间序列的最小匹配(以便在第一个</table>
之后不匹配)与?
之后的匹配*
。
答案 1 :(得分:0)
这是一个有效的正则表达式:
.*(\s*<table\s*>\s*)+(<table\s*>.*</table\s*>)(\s*</table\s*>\s*)+
内部表及其文本位于第二个匹配组中。
作为小提琴: http://fiddle.re/w73vc6
这当然只有在嵌套方式与您指示的情况下才有效,即外表中没有其他内容,并且表格中没有更多表格以及您需要的文本。