html - 如何使用正则表达式避免 html 块
问题描述
我必须使用正则表达式找到由“[”和“]”包围的所有字符串,但要避免<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
所以上面的正则表达式<p>[data3] [data4] [data5]</p>
将从你上面的 HTML 代码中返回这个。
当您从上面的正则表达式获取该字符串时,然后使用下面的正则表达式仅获取所有 [data] 字符串。
/\[(.*?)\]/g
所以上面的正则表达式将从上面的字符串返回“ [data3][data4][data5] ”。
推荐阅读
- java - 用于来电通知的 Cordova 插件
- ruby-on-rails - rspec rails:单元测试数据库查询
- php - 如何使 cakephp 邮件只读
- node.js - 无法创建离子项目?
- javascript - 使用 Javascript 从视频文件中提取地理标签
- android - 如何将正文数据发送到 GET 方法请求 android
- javascript - 如何访问动态创建的元素的属性?
- powershell - Get Unique records from large files quickly
- excel - Excel counting seperate values in the same cell
- c# - How to set proxy for Android in a Xamarin C# application using WebView?