使用正则表达式
一般来说,如果被要求匹配一个字符串,应该首先会想到一个正则表达式模式进行匹配。
正则表达式提供各种功能:
1. ^:表示一个字符串或者行的开头
2. [a-z]:表示一个字符的范围,匹配从a到z的任何字符
3. [0-9]:表示一个字符范围,匹配从0到9的任何字符
4. [a-zA-Z]:匹配从a到z或者A到Z的任何字符。请注意,你可以在方括号内指定的字符范围的数量没有限制,您可以添加想要匹配的其他字符或范围。
5. [^a-z]:这个变量匹配不在a到z范围内的任何字符。字符^用来否定字符范围,在方括号内的含义与在方括号之外表示开始的含义不同。
6. [a-z*]:表示一个字符范围,匹配从a到z的任何字符0次或多次。
7. [a-z]+:表示一个字符范围,匹配从a到z的任何字符1次或者多次。
8. .:匹配任意一个字符
9. \.:表示句点字符。反斜杠用于转义句点字符,因为句点字符在正则表达式中具有特殊含义。还要注意,在许多语言中,我们需要转义反斜杠本身,因此需要使用\\。
10. $:表示一个字符串或者行的结尾。
来看一道例题:
1517. 查找拥有有效邮箱的用户
1. 前缀名以字母开头:^[a-zA-Z]
2. 前缀名包含字母(大小写)、数字、下划线、句点、横杠:[a-zA-Z0-9\_\.\-]
3. 以域名'@leetcode.com'结尾:@leetcode\.com$
SELECT user_id, name, mail FROM Users -- 请注意,我们还转义了`@`字符,因为它在某些正则表达式中具有特殊意义 WHERE mail REGEXP '^[a-zA-Z][a-zA-Z0-9_.-]*\\@leetcode\\.com$';