使用 PostgreSQL 获取包含 iframe 元素的记录,其中包含 'src="http:' 的记录



我需要得到所有记录与iframe元素的属性"src"以"http:"开始。

在表"entries"中有一个列"content",它包含HTML字符串。这些字符串可以包含0个或多个iframe元素。

如果在"content"里面有这样的记录:

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

应该返回

我目前正在尝试下一个查询,但结果不像预期的那样。

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

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

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

这是一个regex的演示(更多regex的细节见右侧窗格)

正则表达式匹配<iframe,然后匹配>以外的0个或多个字符,然后匹配src="http:,然后再匹配>以外的0个或多个字符,最后匹配>

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

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

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

为了更准确的检查,你可以像这样添加空格:

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

最新更新