首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex不使用mysql的REGEXP

Regex不使用mysql的REGEXP
EN

Stack Overflow用户
提问于 2015-01-07 14:05:27
回答 2查看 1K关注 0票数 1

问题:

我想得到包含子域的所有记录。

某些子域在www.后以http://作为前缀保存,但并不是所有的都是。

示例

http://www.sub.domain.comhttp://sub.domain.com

我有一个工作正则表达式,我已经在RegExr上进行了测试。

^(http:\/\/)(www\.)?(\w)+(\.)(\w)+(.)(\w|\/){2,10}

这两个例子都匹配得很好。

然而,当我尝试使用REGEXP在查询中使用这个regex时,mysql返回0条记录。

我试过了:

代码语言:javascript
复制
SELECT * FROM `front` WHERE `domain` REGEXP '^(http:\/\/)(www\.)?(\w)+(\.)(\w)+(\.)(\w|\/){2,10}$';

SELECT * FROM `front` WHERE `domain` REGEXP '/^(http:\/\/)(www\.)?(\w)+(\.)(\w)+(\.)(\w|\/){2,10}$/';

SELECT * FROM `front` WHERE `domain` REGEXP '/^(http:\/\/)(www\.)?(\w)+(\.)(\w)+(\.)(\w|\/){2,10}$/g';

全部返回0条记录。

TL;博士

在MySQL的REGEXP函数中使用时,我的工作REGEX似乎不起作用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-07 14:14:19

\w中不支持MySQL元字符。使用[A-Za-z0-9_]代替:

代码语言:javascript
复制
SELECT * FROM `front` WHERE `domain` REGEXP '^(http:\/\/)(www\.)?([A-Za-z0-9_])+(\.)([A-Za-z0-9_])+(.)([A-Za-z0-9_]|\/){2,10}$';
票数 3
EN

Stack Overflow用户

发布于 2015-01-07 14:14:01

就在文献资料

因为MySQL在字符串中使用C转义语法(例如,“\n”来表示换行符),所以必须加倍在REGEXP字符串中使用的任何“\”。

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

https://stackoverflow.com/questions/27821225

复制
相关文章

相似问题

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