【发布时间】:2021-10-28 16:18:17
【问题描述】:
我正在尝试在表中搜索包含 URL 的 text 列。所以我用了这个:
SELECT * FROM table WHERE text REGEXP '((http|ftp|https):\/\/([\w_-]+(?:(?:\.[\w_-]+)+))([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?)'
但我在下面收到此错误
#1139 - 从正则表达式中得到错误“重复运算符操作数无效”
我需要获取 text 列包含 URL 字符串的行,如下所示:
"Hello http://www.google.com World http://examples.com"
【问题讨论】:
-
你不需要那么大的模式来检查是否有 URL,试试
'(http|ftp)s?://' -
@WiktorStribiżew 但是当文本有类似
No john don't use http:// use https:// instead的内容时,它不包含 URL,但它会被选中...请你告诉我一个确保选中的正确方法text 有 URL 吗? -
我觉得还是
'(http|ftp)s?://[^/[:space:]]+\\.[[:alpha:]]+' -
什么版本的 MySQL? (8.0 改变了语法。)