我试图删除SQL数据库中的以下字符串/行:
<p><span style="font-size:16px"><strong>The quick brown </strong></span><strong><span style="font-size:16px">fox jumps.</span></strong></p>
<p>
开头,以</p>
The
,quick
,brown
。但它们可能被其他东西(空格,
或其他HTML标记)<p></p>
标记。我已经尝试过使用RegExp,但我无法过滤多个关键字(AND
运算符)。
我可以将我的数据库导出到一个sql文件,这样我就可以使用你推荐的任何解决方案,Windows / Linux,文本编辑器,js脚本等等。但我会很感激最简单和优雅的解决方案。
答案 0 :(得分:1)
我认为您必须将.*
限制为效率更高但更精确的(?:(?!<\/?p[^<]*>).)*
,以强制匹配1 <p>
标记内的字词:
(?i)<p>(?:(?!<\/?p[^<]*>).)*the(?:(?!<\/?p[^<]*>).)*?quick(?:(?!<\/?p[^<]*>).)*?brown(?:(?!<\/?p[^<]*>).)*?<\/p>
请参阅demo
答案 1 :(得分:0)
这个表达式^<p>.*The.*quick.*brown.*</p>\$
对我有用:
[root@fedora ~]# grep "^<p>.*The.*quick.*brown.*</p>\$" test1.txt
<p><span style="font-size:16px"><strong>The quick brown </strong></span><strong><span style="font-size:16px">fox jumps.</span></strong></p>
<p><strong>The quick brown </strong></span><strong><span style="font-size:16px">fox jumps.</span></strong></p>
<p>The quick brown </strong></span><strong><span style="font-size:16px">fox jumps.</p>
[root@fedora ~]#
答案 2 :(得分:0)
您可以在任何编辑器(例如notepad ++)或javascript或任何带有g
,m
,i
修饰符的PCRE引擎中使用以下内容:
^<p>.*?the.*?quick.*?brown.*?<\/p>$
因为您的陈述.*
.+
代替they MIGHT be separated by something else
并替换为''
(空字符串)