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