MySQL正则表达式只返回一行
我一直在MySQL中编写一个正则表达式来识别那些具有.com TLD的域。URL的格式通常是MySQL正则表达式只返回一行,mysql,regex,Mysql,Regex,我一直在MySQL中编写一个正则表达式来识别那些具有.com TLD的域。URL的格式通常是 http://example.com/ 我提出的正则表达式如下所示: REGEXP '[[.colon.]][[.slash.]][[.slash.]]([:alnum:]+)[[...]]com[[./.]]' 我们匹配://的原因是,我们不会拾取诸如http://example.com/error.com/wrong.com 因此,我的问题是: SELECT DISTINCT name FROM
http://example.com/
我提出的正则表达式如下所示:
REGEXP '[[.colon.]][[.slash.]][[.slash.]]([:alnum:]+)[[...]]com[[./.]]'
我们匹配://的原因是,我们不会拾取诸如http://example.com/error.com/wrong.com
因此,我的问题是:
SELECT DISTINCT name
FROM table
WHERE name REGEXP '[[.colon.]][[.slash.]][[.slash.]]([:alnum:]+)[[...]]com[[./.]]'"
然而,这只是返回一行,而实际上它应该返回更多行(超过1000行)。我在查询中犯了什么错误?您当前的查询只匹配以
.com/
结尾的名称,而不是以斜杠开头的.com
。请尝试以下操作:
SELECT DISTINCT name
FROM table
WHERE name REGEXP '[[.colon.]][[.slash.]][[.slash.]]([:alnum:]+)[[...]]com([[./.]].*)?'"
您当前的查询只匹配以.com/
结尾的name
s,而不是以斜杠开头的.com
。请尝试以下操作:
SELECT DISTINCT name
FROM table
WHERE name REGEXP '[[.colon.]][[.slash.]][[.slash.]]([:alnum:]+)[[...]]com([[./.]].*)?'"
不确定这是否是问题,但它应该是[[:alnum:]
,而不是[:alnum:]
不确定这是否是问题,但它应该是[:alnum:]
,而不是[:alnum:]拆分URL可能比重新注册URL更清晰
SELECT DISTINCT name FROM table
WHERE SUBSTRING_INDEX((SUBSTRING_INDEX(name,'/',3),'.',-1)='com';
拆分URL可能比重新注册URL更清晰
SELECT DISTINCT name FROM table
WHERE SUBSTRING_INDEX((SUBSTRING_INDEX(name,'/',3),'.',-1)='com';
呃。做得好,似乎我看错了文档。Erk。做得好,似乎我看错了文档。