概述
随着数据的不断涌来,对其的定性搜索也变得越来越重要。如:用户名为邮箱、手机号等。
介绍
正则表达式(正规表达式、常规表达式)(Regular Expression,简写为 regex、regexp、RE),计算机科学的一个概念。
正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
给定一个正则表达式和另一个字符串,我们可以达到如下的目的:
- 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”)
- 可以通过正则表达式,从字符串中获取我们想要的特定部分
正则表达式的特点:
- 灵活性、逻辑性和功能性非常的强
- 可以迅速的用极简单的方式达到字符串的复杂控制
正则表达式应用对象: 文本
语法
正则表达式由普通字符、元字符组成,普通字符包括大小写的字母和数字,元字符则有具体的含义。
\ 转义字符
^ 匹配输入字符串的开始
$ 匹配输入字符串的结束
* 匹配前面的子表达式任意次 等价于 {0,}
+ 匹配前面的子表达式至少一次 等价于 {1,}
? 匹配前面的子表达式至多一次 等价于 {0,1}
{n} n是一个非负数,匹配确定的n次
{n,} n是一个非负数,至少匹配n次
{n,m} n、m均为非负数,其中n<m,至少匹配n次且至多匹配m次
? 当该字符紧跟在任何一个其他限制符(*、+、?、{n}、{n,}、 {n,m}) 后面时,匹配是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。
. 匹配除”\r\n”之外的任何单个字符。
x|y 匹配x或y
[xyz] 字符集合,匹配所包含的任意一个字符
[^xyz] 负值字符集合。匹配未包含的任意字符。
[a-z] 字符集合。匹配所包含的任意一个字符。
[^a-z] 负值字符集合。匹配任何不在指定范围内的任意字符。
\b 匹配一个单词边界,也就是指单词和空格间的位置。(即正则表达式的匹配有两种概念1. 匹配字符 2. 匹配位置)
\B 匹配非单词边界。
\d 匹配一个数字字符。[0-9]
\D 匹配一个非数字字符。[^0-9]
\w 匹配包括下划线的任何单词字符。
\W 匹配任何非单词字符。
\s 匹配任何不可见字符。
\S 匹配任何可见字符。
() 将(和)之间的表达式定义为组(Group),并且将匹配这个表达式的字符保存到一个临时区域
示例
测试用例 | 正则表达式 | 测试结果 |
---|---|---|
AAAA | a | 不符合 |
AAAA | A | 符合 |
ABC | ^B | 不符合 |
ABC | ^A | 符合 |
ABC | ABC ︳ABD | 符合 |
ABC | ABE ︳CBD | 不符合 |
, | [C,D] | 符合 |
E | [C,D] | 不符合 |
- | [-CD] | 符合 |
- | [C-D] | 不符合 |
123D | \d | 符合 |
123 | \D | 不符合 |
yanglei3kyou@126.com | [a-zA-Z0-9.%+-]+@[a-zA-Z0-9.%+-]+\.[a-zA-Z0-9_.%+-]{2,4} | 符合 |
yanglei3kyou@126.com1 | [a-zA-Z0-9.%+-]+@[a-zA-Z0-9.%+-]+\.[a-zA-Z0-9_.%+-]{2,4} | 不符合 |
参考