问题:
我想得到包含子域的所有记录。
某些子域在www.后以http://作为前缀保存,但并不是所有的都是。
示例:
http://www.sub.domain.com和http://sub.domain.com
我有一个工作正则表达式,我已经在RegExr上进行了测试。
^(http:\/\/)(www\.)?(\w)+(\.)(\w)+(.)(\w|\/){2,10}
这两个例子都匹配得很好。
然而,当我尝试使用REGEXP在查询中使用这个regex时,mysql返回0条记录。
我试过了:
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似乎不起作用。
发布于 2015-01-07 14:14:19
在\w中不支持MySQL元字符。使用[A-Za-z0-9_]代替:
SELECT * FROM `front` WHERE `domain` REGEXP '^(http:\/\/)(www\.)?([A-Za-z0-9_])+(\.)([A-Za-z0-9_])+(.)([A-Za-z0-9_]|\/){2,10}$';发布于 2015-01-07 14:14:01
就在文献资料
因为MySQL在字符串中使用C转义语法(例如,“\n”来表示换行符),所以必须加倍在REGEXP字符串中使用的任何“\”。
https://stackoverflow.com/questions/27821225
复制相似问题