引言:
正则表达式就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,用来表达对字符串的一种过滤逻辑。通过正则表达式可以达到如下的目的:
- 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);
- 可以通过正则表达式,从字符串中获取我们想要的特定部分。
I. 匹配普通文本字符
正则表达式可以只包含普通的文本,代表去精确匹配这个文本。例如:
正则表达式:song
待匹配文本:xiaosongge,xiaoSongge
匹配后结果:xiaosongge
分析:正则表达式默认是区分大小写的,所以song不会匹配 "Song" 。但是大部分的正则表达式实现都提供了一个选项表示不区分大小写。
II. 匹配任意字符
.
用来匹配一个任意字符,例如:
正则表达式:c.t
待匹配文本:cat cet caaat dog
匹配后结果:cat cet
分析:c.t
会匹配以 "c" 开头,以 "t" 结尾,中间为任意字符的字符串。
同理,多个连续的.可以匹配多个连续的任意字符:
正则表达式:c..t
待匹配文本:cat cet caat dog
匹配后结果:caat
III. 匹配特殊字符
.
在正则表达式中含有特殊的意义,是一个特殊的字符。\
也是特殊字符,可以对特殊字符起到转义作用。如果你想匹配的是一个真正的 "." 字符,需要在 .
前面加上 \
对字符进行转义。所以,\.
表示真正的 "." 字符。
正则表达式:c.t
待匹配文本:cat c.t dog
匹配后结果:c.t
注意:因为\
也是特殊字符,所以想要匹配一个真正的 "" 字符,需要使用两个反斜线\\
:
正则表达式:c\\t
待匹配文本:cat c\t dog
匹配后结果:c\t
IV. 使用字符集合
上面说到.能匹配一个任意字符,但是如果我想匹配几个特定字符怎么办?匹配一组特定的字符可以使用[和]元字符。
正则表达式:c[ab]t
待匹配文本:cat cbt cet
匹配后结果:cat cbt cet
分析:[ab]
会匹配 "a" 或者 "b"。所以 c[ab]t
会匹配 "cat" 和 "cbt" 而不会匹配 "cet"。