gpt4 book ai didi

mysql - MYSQL 中的正则表达式错误

转载 作者:行者123 更新时间:2023-11-29 02:43:34 24 4
gpt4 key购买 nike

我想在 MySQL 中选择以 a、e、i、o、u 开头并以 a、e、i、o、u 结尾的城市。(大小写无关紧要)

查询1

SELECT CITY FROM STATION WHERE CITY REGEXP '^[AEIOU]' and CITY REGEXP '[AEIOU]$';

查询2

SELECT CITY FROM STATION WHERE CITY REGEXP '^[AEIOU]*[AEIOU]$';

为什么 Query2 给我一个错误,尽管 Query1 是正确的。

最佳答案

对于您的第一个查询,您只获取以元音开头或结尾的条目。第二个只匹配以 0 个或多个元音字母开头并以一个元音字母结尾的条目(因此,您只会得到类似 aAou 的结果)。

您可以尝试使用

SELECT CITY FROM STATION WHERE CITY REGEXP '^[AEIOU].*[AEIOU]$'
^^

.* 模式匹配任何 0+ 个字符,尽可能多,因此它将匹配任何以元音开头和结尾的字符串。

然而,WHERE CITY REGEXP '^[AEIOU]' 和 CITY REGEXP '[AEIOU]$' 获取仅由 1 个元音组成的条目,并且上面不会匹配像 这样的记录A(单元音字符串)。要匹配那些使用可选组:

SELECT CITY FROM STATION WHERE CITY REGEXP '^[AEIOU](.*[AEIOU])?$'
^ ^^

这里,(...)? 是一个捕获组(MySQL 正则表达式不支持非捕获组)匹配一系列模式 1 次或 0 次 (由于 ? 量词)。

关于正则表达式的一些注意事项:

  • ^[AEIOU].*[AEIOU]$ - 以不区分大小写的方式匹配以元音开头和结尾的整个字符串 ( REGEXP is not case sensitive, except when used with binary strings )
    • ^ - 匹配输入的开始
    • [AEIOU] - 集合中的单个元音
    • .* - 尽可能多的任何 0+ 字符(MySQL 中使用的 POSIX 正则表达式不支持惰性量词,并且 . 匹配任何字符,甚至换行符, 也是)
    • [AEIOU] - 元音
    • $ - 输入结束。

关于mysql - MYSQL 中的正则表达式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46482901/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com