繁体   English   中英

如何使用正则表达式避免 html 块

[英]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]&nbsp;&nbsp;[data4]&nbsp;&nbsp;[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]&nbsp;&nbsp;[data4]&nbsp;&nbsp;[data5]</p>

当您从上面的正则表达式获取该字符串时,然后使用下面的正则表达式仅获取所有 [data] 字符串。

/\[(.*?)\]/g

所以上面的正则表达式将从上面的字符串返回“ [data3][data4][data5] ”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM