regex - 改进 JS Regex 以排除包含特定字符串的行
问题描述
我有一个 JS 正则表达式来替换包含 p 标签内的 img 标签的字符串部分。我正在捡那些我不想要的。
我要查找和替换的示例(src 和类并不总是相同的顺序,并且 imageData 并不总是相同的 base64“数字”,所以我不能只匹配整个字符串):
<p><img class="classIWantToMatch" src="data:image/gif;base64,dataForImage"></p>
<p><img src="data:image/gif;base64,imageData" class="classIWantToMatch" ></p>
也被找到和替换的样本(但我不想):
<p><img src="/myFiles/my.PNG" alt=""></p>
正则表达式:
/(<p><img).*?(class="classIWantToMatch").*?(<\/p>)/g
我试图弄清楚前瞻和后瞻,但我似乎无法让它做我想做的事。
除了你的基本谷歌搜索,我在这里试过:
使用正则表达式查找包含一个字符串并排除第二个字符串的字符串?
以及其他几个。我想我只是不明白向前/向后。
解决方案
此 RegEx可能会帮助您仅获得所需的目标或设计一个表达式来做到这一点:
(<p><img.+class=\")(classIWantToMatch)(\".+<\/p>)
- 您只能在第二个捕获组中绑定您想要的目标。
- 使用简单的左边界
(<p><img.+class=\")
和右边界,(\".+<\/p>)
您可能可以这样做。但是,为了安全起见,您可能会考虑使这些边界更具限制性。例如,.+
可以仅限于一个字符列表。
推荐阅读
- javascript - 如何在javascript中分割文本
- unity3d - 需要帮助实施 Perforce depot 或 GitHub repot,允许异地云托管与本地计算机之间的现场主服务器同步
- pandas - 在 pandas 的 groupby 期间根据列是否包含特定字符串来创建变量
- r - 如何从R中的数据框中删除重复项
- android - 有两个intent filter的activity重启了,但是重启的时候主intent-filter没有被调用,其他intentet filter被调用
- salesforce - 无法连接到 Salesforce api
- django - 移动设备上的 Django 实时访问
- java - 我在哪里可以下载用于 Java 的 rt.jar?
- python - Python pandas 替代 'map' 用于 2 个变量的函数
- python - Pandas Groupby 并使用自定义值创建新列