簡體   English   中英

用於捕獲嵌套表的 Java 正則表達式模式

[英]Java regular expression pattern for capturing nested tables

我有一個 html 頁面,我需要解析其中包含許多嵌套表。

<table>   <table>   <table > Status </table>  </table>  </table>
<table>   <table>   </table>  </table>

我正在嘗試創建一個 Java 正則表達式模式來僅匹配文本

 <table> Status </table>

我也嘗試過像 Jsoup 這樣的 html 解析器,但找不到一種干凈的方法來解析它。 我一直在思考這個問題,但無法干凈地提取這段文字。 感謝在這方面使用 Java regex Pattern/jsoup 的任何幫助。

<table\s*>\s*(([^<]|<[^t]|<t[^a]|<ta[^b]|<tab[^l]|<tabl[^e])*?)\s*</table\s*>

您可以獲取第一個捕獲的組(正則表達式上()之間匹配的內容)以獲取<table></table>之間的內容(在您的第一個示例Status 中)。

解釋 :

我們搜索以 開頭的字符串:

<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>? *之后。

這是一個有效的正則表達式:

.*(\s*<table\s*>\s*)+(<table\s*>.*</table\s*>)(\s*</table\s*>\s*)+

帶有文本的內表位於第二個匹配組中。

作為小提琴: http : //fiddle.re/w73vc6

這當然只有在嵌套如您所指示的情況下才有效,即外部表格內沒有其他內容,並且表格內沒有更多包含您需要的文本的表格。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM