如何在 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]
恰好匹配一个字符。
两个方括号集之间没有任何内容,因此匹配的字符串之间不能有任何字符。
问题:查询来自 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]
恰好匹配一个字符。
两个方括号集之间没有任何内容,因此匹配的字符串之间不能有任何字符。