Mysql正则表达式不';不要从alnum开始
我正在尝试从表中删除不以alnum字符开头的记录。我尝试了很多不同的方法,但MySQL似乎并不擅长 我目前的查询是:Mysql正则表达式不';不要从alnum开始,mysql,regex,Mysql,Regex,我正在尝试从表中删除不以alnum字符开头的记录。我尝试了很多不同的方法,但MySQL似乎并不擅长 我目前的查询是: SELECT * FROM central_store WHERE DomainName NOT REGEXP '^[[a-z|0-9]]' 我也尝试过这个选项,但我的结果仍然返回以0-9开头的记录。我知道这可能是最基本的,但请有人解释一下我做错了什么。由于双括号,您的模式不起作用^[[a-z | 0-9]]匹配字符串的开头(^)位置,然后[[a-z | 0-9]匹配[/cod
SELECT *
FROM central_store
WHERE DomainName NOT REGEXP '^[[a-z|0-9]]'
我也尝试过这个选项,但我的结果仍然返回以0-9开头的记录。我知道这可能是最基本的,但请有人解释一下我做错了什么。由于双括号,您的模式不起作用
^[[a-z | 0-9]]
匹配字符串的开头(^
)位置,然后[[a-z | 0-9]
匹配[/code>,或ASCII字母,或
,或ASCII数字,然后匹配]
。因此,它匹配字符串开头的a]
您可以使用
REGEXP '^[^a-z0-9]'
或者,使用^[^[:alnum:]
,因为必须在括号表达式中使用POSIX字符类(如[:alnum:]
):
REGEXP '^[^[:alnum:]]'
如果您有默认设置,'^[a-z0-9]
模式也将匹配大写ASCII字母,因为默认情况下MySQL正则表达式搜索不区分大小写
请注意,“^[^a-z0-9]”
匹配
^
-字符串的开头
[^a-z0-9]
-除ASCII字母或数字以外的任何字符([^[:alnum:][]
执行相同操作,匹配除字母或数字以外的任何字符)
“alnum”是指“字母或数字”。但是你说你不想从一个数字开始。是哪一个
WHERE url RLIKE '^[[:alpha:]]'
说“以一个字母开始,不是数字,不是标点符号
要查找“不以字母开头”的行,请执行以下操作:
如果您需要“以字母开头”和“以alnum继续”:
并添加NOT
将其反转
(既然你说的是“url”,我怀疑你对此不感兴趣。)对不起-这两个选项仍然返回以数字开头的url:(是的,因为0-9
匹配数字。你只需要匹配以字母开头的条目吗?然后使用'^[a-z]'
或'^[:alpha:]“
我想要不以数字或字母开头的字符串,只需在括号表达式中的开头括号后添加^
即可。如果还需要查找空记录,则需要使用类似^([^a-z0-9]|$)
。抱歉-仍然没有区别:(
WHERE url NOT RLIKE '^[[:alpha:]]'
WHERE url RLIKE '^[[:alpha:]][[:alnum:]]*$'