什么正则表达式将匹配表中的单元格识别文本嵌套表?
-
19-09-2019 - |
题
什么正则表达式将匹配与表格单元可识别的文本嵌套表?我试过,但未能拿出一个正则表达式来提取特定的表我想出去抓在本例中两个表的开始和结束。下面是一些上手:“<table>.*?</table>
”
<table>
<tr>
<td>
<table>
<tr><td>Code1</td></tr>
<tr><td>some data</td></tr>
<tr><td>etc ...</td></tr>
</table>
</td>
</tr>
<tr>
<td>
<table>
<tr><td>Code2</td></tr>
<tr><td>some data</td></tr>
<tr><td>etc ...</td></tr>
</table>
</td>
</tr>
</table>
说我要提取包含“代码2”的表。什么正则表达式将特别匹配,只有那个表?
解决方案
在下面的正则表达式会发现你的表格:
(?ms)<table>((?!<table>).)*<td>Code2</td>.*?</table>
使用(?ms)
您开启“多场比赛” (m)
和“点相匹配的新行,太” (s)
。那么你有一个负先行(?!)
,以确保你有你的比赛中没有表的第二次创业。
其他提示
我不会用这个正规式,因为HTML是不正规,没有边缘的情况下结束你绊倒。你已经开使用HTML解析器更好。无论语言或者你使用的平台,就会有一个可用的。
不要使用正则表达式。使用HTML解析器!
然而,在Perl(假设你没有嵌套的表格):
$xml =~ /<table>.*<td>Code2<\/td>.*<\/table>/s;
不隶属于 StackOverflow