1.正则表达式的基本语法
1.1两个特殊符号 ‘^’ 和 ‘$’
^ 正则表达式的起始符
^tom 表示所有以tom开头的字符串
$ 正则表达式的结束符
lucy$ 表示所有以lucy结束的字符串
^$ 结合使用
^tom$ 表示以tom开头,并以tom结束的字符串,只有tom本身
不使用 ^$
tom 表示任何包含 tom 的字符串
1.2 出现次数的表示符号 * + ?
* 表示出现 0次 或者 至少1次
+ 表示出现 至少1次
? 表示出现 0次 或者 1次
^abc*$ 表示 c 可能出现0次或者至少1次, ab必须出现1次
^bcd+$ 表示 d 至少出现1次,bc必须出现1次
^cba?$ 表示 a 可能出现0次或者1次,cb必须出现1次
^(abc)+$ 表示 abc 这个整体至少出现1次
^[abc]+$ 表示 abc 中任意一个字符,至少出现1次
^ab+c$ 表示 a 必须出现1次 ,b至少出现1次 ,c必须出现1次
1.3 指定出现次数的范围 {}
使用{m,n} 表示出现次数的范围
m–至少出现m次
n–最多出现n次
举例如下
1 2 3 |
|
- {m,n} 可以不指定n的值,但是一定要指定m的值
- {k} 只有一个值 k ,表示出现的是固定的次数
1.4 “或” 操作 |
^ab|cd$ -- 表示匹配结果是 ab 或 cd 其中一个
^(bc|df)a$ -- 表示匹配结果是 bca 或 dfa
^(ab|c)*d$ -- 表示匹配结果是 以 ab 开头或者 c 开头,中间任意字符,以d结尾
1.5 替代任意字符的 . 英文句号
^ab.[0-9]$ -- 表示ab开头,中间任意1个字符后面是0-9任意一个数字
^[a-z].{3}$ -- 表示a-z中任意一个小写字母,后面跟三个任意字符
1.6 方括号的使用 []
[] 方括号表示某些字符允许在一个字符串中某一个特定位置出现
^[ab]$ 表示一个字符串中有一个a 或 b <===> ^a|b$
^[a-d]$ 表示一个字符串包含小写 abcdb 中的一个 <==>^[abcd]$<==>^a|b|c$
^[0-9]a$ 表示0-9中任意一个数字后面跟一个小写字母a
^[a-z]{2}$ 表示a-z中任意的字符串总共出现3个
^[A-Z]+$ 表示A-Z中任意一个大写字母至少出现1次
方括号[]中使用 ^ ,表示不希望出现字符,简称过滤字符,而且 ^ 必须用在[]中的第一位
^a[^0-9]%$ 表示 a 和 % 中间不能出现数字
1.7 小括号 () 的作用
1.7.1 限定量词作用的范围
^abc+$ ab 后面 跟着c至少出现一次
^(abc)+$ abc整体至少出现一次
1.7.2 分支结构
^abc(123|bb)+$ abc 后面跟着 (123|bb)+
^abc123|bb+$ abc123 或者 bb+
1.7.3 引用分组
这是括号一个重要的作用,有了它,我们就可以进行数据提取,以及更强大的替换操作。
而要使用它带来的好处,必须配合使用实现环境的API。
以日期为例。假设格式是yyyy-mm-dd的,我们可以先写一个简单的正则:
1 2 3 |
|
1.7.4提取数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
1.7.5替换
比如,想把yyyy-mm-dd格式,