Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql正则表达式不';不要从alnum开始_Mysql_Regex - Fatal编程技术网

Mysql正则表达式不';不要从alnum开始

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

我正在尝试从表中删除不以alnum字符开头的记录。我尝试了很多不同的方法,但MySQL似乎并不擅长

我目前的查询是:

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:]]*$'