[英]How to avoid html blocks with regex
我必须使用正则表达式找到所有由“[”和“]”包围的字符串,但要避免<table></table>
块内的字符串,例如:
<html>
<body>
<p><table>
<tbody>
<tr>
<td style="border-style: solid; border-width:1px;">
<span style="font-family: Courier;">[data1]</span>
</td>
<td style="border-style: solid; border-width:1px;">
<span style="font-family: Courier;">[data10]</span>
</td>
</tr>
</tbody>
</table>
</p>
<p>[data3] [data4] [data5]</p>
</body>
</html>
在这种情况下,应该只找到 [data3]、[data4] 和 [data5]。 到目前为止,我有这个: @"(((?<?<span>)(\[[a-zA-Z_0-9]+)](??<\/span>))|((?<.<span>)(\[[a-zA-Z_0-9]+)])|((\[[a-zA-Z_0-9]+)](?!<\/span>)))(?!.*\1)"
这会找到所有没有被标签包围的 [] 块,我尝试添加一个否定的前瞻和后瞻,但它不起作用,它仍然会获取表格块内的那些。
希望你们能帮助我解决这个问题。
下面的正则表达式将返回包含在<p> </p>
标记中的所有 [数据]。
/<p.*?>\[(.*?)\]<*.p>/g
所以上面的正则表达式将从你上面的 HTML 代码返回这个<p>[data3] [data4] [data5]</p>
。
当您从上面的正则表达式获取该字符串时,然后使用下面的正则表达式仅获取所有 [data] 字符串。
/\[(.*?)\]/g
所以上面的正则表达式将从上面的字符串返回“ [data3][data4][data5] ”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.