目录
1. like的使用详解
2.rlike使用详解
3. regexp的用法和rlike一样
4. 源码分析
5. 总结
6. 练习
1. like的使用详解
A like B
//A 是字符串,B是表达式
- 表示能否用B去完全匹配A的内容,换句话说能否用B这个表达式去表示A的全部内容,注意这个和rlike是有区别的。
- 返回的结果是True/False.
- B只能使用简单匹配符号_和%,”_"表示任意单个字符,字符“%”表示任意数量的字符like的匹配是按字符逐一匹配的,使用B从A的第一个字符开始匹配,所以即使有一个字符不同都不行。
2.rlike使用详解
A rlike B,表示B是否在A里面即可。而A like B,则表示B是否是A.
B中的表达式可以使用Java中全部正则表达式,具体正则规则参考Java,或者其他标准正则语法。
^ | 表示一个字符串或者行的开头 |
[a-z] | 表示一个字符范围,匹配从a到z的任何字符 |
[0-9] | 表示一个字符范围,匹配从0到9的任何字符 |
[a-zA-Z] | 这个变量匹配从a到z或A到Z的任何字符。请注意,你可以在方括号内指定的字符范围的数量没有限制,您可以添加想要匹配的其他字符或者范围。 |
[^a-z] | 这个变量匹配不在a到z范围内的任何字符。请注意,字符^用来否定字符范围,它在方括号内的含义与它的方括号外表示开始的含义不同。 |
[a-z]* | 表示一个字符范围,匹配从a到z的任何字符0次或多次 |
[a-z]+ | 表示一个字符范围,匹配从a到z的任何字符1次或多次 |
. | 匹配任意一个字符 |
\. | 表示句点字符。 |
$ | 表示一个字符串或行的结尾 |
3. regexp的用法和rlike一样
4. 源码分析
like、rlike、regexp使用的UDF如图
由图可见rlike和regexp使用相同的UDF类都为UDFRegexp.class,不同于like使用UDFLike.class;
5. 总结
like与rlike的使用对比总结:rlike功能和like功能大致一样,like是后面只支持简单表达式匹配(_%), 而rlike则支持标准正则表达式语法。所以如果
6. 练习
Leetcode1517 查找拥有有效邮箱的用户