[英]Regex not working with mysql's REGEXP
問題:
我想獲取包含子域的所有記錄。
某些子域以www.
為前綴保存www.
在http://
,但不是全部。
例子 :
http://www.sub.domain.com
和http://sub.domain.com
我已經在RegExr上測試了這個工作的正則表達式:
^(http:\\/\\/)(www\\.)?(\\w)+(\\.)(\\w)+(.)(\\w|\\/){2,10}
哪個很好地匹配了兩個示例。
但是,當我嘗試使用REGEXP
在查詢中使用此正則表達式時,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; DR
在MySQL的REGEXP
函數中使用時,我正在使用的REGEX似乎無法正常工作。
MySQL中沒有\\w
元字符支持。 使用[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}$';
就在文檔中 :
由於MySQL在字符串中使用C轉義語法(例如,“ \\ n”表示換行符),因此必須將REGEXP字符串中使用的任何“ \\”加倍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.