关于正则表达式

引言:

正则表达式就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,用来表达对字符串的一种过滤逻辑。

通过正则表达式可以达到如下的目的:

  1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);
  2. 可以通过正则表达式,从字符串中获取我们想要的特定部分。

# 一. 匹配普通文本字符

正则表达式可以只包含普通的文本,代表去精确匹配这个文本。例如:

正则表达式: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"。