select id,coname,description from test where website='' and description regexp '.*([a-z0-9\-]+\.){0}[a-z0-9\-]([a-z0-9\-]*[\.])+(aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|xyz|travellink|site|top|ren|red|wang|club|[a-z]{2}).*' order by id;
用mysql的regexp函数查询的时候一定要在正则表达式前后加上 .* (一个点号,一个星号,前后都要加上)。
经过探索,匹配一级网址的最佳正则表达式是
([a-z0-9\-]+\.){0}[a-z0-9\-]([a-z0-9\-]*[\.])+(aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|xyz|travellink|site|top|ren|red|wang|club|[a-z]{2})
以上表达式可以匹配的域名包含类似的以下这些:
abc.cn
abc.com.cn
abc.com
123.com
123.com.cn
www.123.com.cn
abc-123.abc-123.abc-123.cn
abc-123.abc-123.com.cn
[abc] a或b或c | . 任意单个字符 | a? 零个或一个a |
[^abc] 任意不是abc的字符 | \s 空格 | a* 零个或多个a |
[a-z] a-z的任意字符 | \S 非空格 | a+ 一个或多个a |
[a-zA-Z] a-z或A-Z | \d 任意数字 | a{n} 正好出现n次a |
^ 一行开头 | \D 任意非数字 | a{n,} 至少出现n次a |
$ 一行末尾 | \w 任意字母数字或下划线 | a{n,m} 出现n-m次a |
(...) 括号用于分组 | \W 任意非字母数字或下划线 | a*? 零个或多个a(非贪婪) |
(a|b) a或b | \b 单词边界 | (a)...\1 引用分组 |
(?=a) 前面有a | (?!a) 前面没有a | \B 非单词边界 |