首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于查找正文中带双斜杠的内部URL的MySQL正则表达式

用于查找正文中带双斜杠的内部URL的MySQL正则表达式
EN

Stack Overflow用户
提问于 2013-01-30 03:50:13
回答 2查看 1.8K关注 0票数 4

我们有一个使用wordpress的网站,我们发现在某些情况下,一个糟糕的插件或用户错误会在网站etc后添加双斜杠(例如,http://example.site//category1/http://example.site/category1//category2/等)。

这似乎是有效的,但似乎没有足够的结果。

代码语言:javascript
复制
SELECT id, post_content
FROM `wp_posts`
where post_content
regexp '(href="[^"]*[^:]\/\/[^"]*)'
and post_status  in('draft','publish')
order by id asc

有没有更好的方法来做这件事?我不希望它与http:后面的双斜杠匹配,因此在:上出现负匹配。

编辑:为了澄清,我想找到所有的帖子( wordpress帖子/页面的正文),这些帖子的url被硬编码到具有双斜杠的页面中,但与http:后面的双斜杠不匹配。

Regexp应该与以下内容匹配:http://example.site//category1/http://example.site/category1//category2/,甚至http://example.site/category1/category2//example.site/category1//category2/

但不应与以下内容匹配:http://example.site/category1/http://example.site/category1/category2/

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-30 04:01:39

也许像这样的东西能行得通。

代码语言:javascript
复制
SELECT *
FROM wp_posts
WHERE CASE WHEN instr(post_content,'http://') > 0 THEN 
  substring(post_content,7) regexp '\/\/'
ELSE
  post_content regexp '\/\/'
END

这是SQL Fiddle

祝好运。

票数 3
EN

Stack Overflow用户

发布于 2013-01-30 04:20:07

您可以使用:

代码语言:javascript
复制
regexp '(https?:\/\/|www\.)[^ ]*\/\/'

如果帖子包含http[s]://www.,后跟带有//的非空格字符,则匹配该帖子。

请看这个SQLFiddle (改编自sgeddes的小提琴)。

或者,您可以将正则表达式减少为'[^:]\/\/',然后查找包含它的帖子。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14591023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档