使用带有PostgreSQL的'src =“http:'获取包含iframe元素的记录

时间:2015-08-05 22:20:11

标签: regex postgresql

我需要使用iframe元素获取所有记录,其属性为“src”,以“http:”开头。

e.g。

在表“条目”中有一列“内容”,其中包含HTML字符串。这些字符串可能包含零个或多个iframe元素。

如果在“内容”中,记录有这样的内容:

<iframe title="Some title" src="http://webpage.com" />

应该退回。

我目前正在尝试下一个查询,但结果不符合预期。

SELECT content FROM entries WHERE content ~ '.*<iframe.*src="http:.*'

2 个答案:

答案 0 :(得分:1)

您可以使用以下正则表达式:

 '<iframe[^>]*src="http:[^>]*>'

这是regex demo(有关更多正则表达式详细信息,请参阅右侧窗格)

正则表达式按字面意思匹配<iframe,然后匹配>以外的0个或更多字符,然后src="http:字面意义,然后再次匹配>以外的0个或更多个字符和最终字符>

答案 1 :(得分:0)

我认为你需要这样的正则表达式:

(?i)(<iframe[^>]*title="[^>]*"[^>]*src="[^>]*"[^>]*>)|(<iframe[^>]*src="[^>]*"[^>]*title="[^>]*"[^>]*>)

/(<iframe[^>]*title="[^>]*"[^>]*src="[^>]*"[^>]*>)|(<iframe[^>]*src="[^>]*"[^>]*title="[^>]*"[^>]*>)/i

为了更准确地检查,您可以添加如下空格:

/(<iframe[^>]* title *= *"[^>]*"[^>]* src *= *"[^>]*"[^>]*>)|(<iframe[^>]* src *= *"[^>]*"[^>]* title *= *"[^>]*"[^>]*>)/i