如何在 MySQL 中使用 RLIKE/REGEXP 模式 .*

How to use RLIKE/REGEXP patterns .* in MySQL

问题:查询来自 STATION 的城市名称列表,这些城市名称的第一个和最后一个字符都是元音字母(即 a、e、i、o 和 u)。您的结果不能包含重复项。

我找到了@Mureinik 编辑的答案,(谢谢!很有帮助!)

SELECT DISTINCT CITY FROM STATION WHERE CITY RLIKE '^[aeiouAEIOU].*[aeiouAEIOU]$';

我很困惑,问题是问他们的第一个和最后一个字符是aeiou,为什么我不能只使用

CITY RLIKE '^[aeiouAEIOU][aeiouAEIOU]$'

但是,当我取出 .和*,显示错误答案。

为什么我们需要使用 .和 * 在这个问题中? 做 。和 * 总是一起使用?

还有一个问题: 从 STATION 查询不以元音开头的 CITY 名称列表。您的结果不能包含重复项。

SELECT DISTINCT CITY FROM STATION WHERE CITY NOT RLIKE '^[aeiouAEIOU].*$'; 

为什么第一个问题用了两次[aeiouAEIOU],第二个只用了一次?

CITY RLIKE '^[aeiouAEIOU][aeiouAEIOU]$'

这只会匹配正好有两个字符的城市名称,都是元音字母。

在正则表达式中,方括号中的一组字符,如 [aeiouAEIOU] 恰好匹配一个字符。

两个方括号集之间没有任何内容,因此匹配的字符串之间不能有任何字符。