簡體   English   中英

正則表達式不適用於mysql的REGEXP

[英]Regex not working with mysql's REGEXP

問題:

我想獲取包含子域的所有記錄。

某些子域以www.為前綴保存www. http:// ,但不是全部。

例子

http://www.sub.domain.comhttp://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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM