什么正则表达式将嵌套表与表格单元格中的可识别文本匹配?我已经尝试但未能提出一个正则表达式来提取我想要的特定表,而不是抓住示例中两个表的开头和结尾。以下是开始使用的内容:“<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>
假设我要提取包含“Code2”的表。什么正则表达式将具体匹配,只有那个表?
答案 0 :(得分:6)
我不会在这方面使用正则表达式,因为HTML不是常规的,并且没有结束边缘情况会让你失望。你最好使用HTML解析器。无论您使用哪种语言或平台,都可以使用。
答案 1 :(得分:4)
以下正则表达式将找到您的表格:
(?ms)<table>((?!<table>).)*<td>Code2</td>.*?</table>
使用(?ms)
启用“多行匹配”(m)
和“点匹配换行符”(s)
。然后你有一个负面的预测(?!)
,以确保你的比赛中没有第二次开始表。
答案 2 :(得分:1)
不要使用正则表达式。使用HTML解析器!
但是,在Perl中(假设您没有嵌套表):
$xml =~ /<table>.*<td>Code2<\/td>.*<\/table>/s;