正则表达式(regular expression 简称regex) 是一种工具,和其它工具一样是为了解决某一类问题而发明的。正则表达式是一些用来匹配和处理文本的字符串。平时主要用于查找和替换符合相应模式的文本,而该模式,就是由正则表达式所定义。需要注意的是,使用正则表达式对字符串进行匹配,正则表达式的编写方案并不是唯一的,同一个问题,往往会有多种方案。同时,需要注意的是正则表达式的语法是区分大小写的即d和D表示的是不同的意思。
正则表达式的特殊字符及其含义如下:
- . 用来匹配任意单个字符,当字符本身为“.”时,需要使用来对其进行转义即(.用于表示.这个字符本身,而不是任意单个字符。在绝大多数的正则表达式的实现里,. 只能用于匹配除了换行符以外的任何单个字符)
- []用来定义一个字符集合。其表示在[]中所包含的字符的其中一个类似与sql语句中的in的作用。在[]中,可以使用“-”来表示一个集合的范围,例如[1-9]和[0123456789]是等价的,当然,其不仅限于数字,以下的也是合法的字符区间:
- A-Z:匹配从A到Z的所有大写字母
- a-z:匹配从a到z的所有小写字母
- A-F:匹配从A到F的所有大写字母
- A-z:匹配从ASCII字符A到ASCII字符z的所有字母,该模式不常用,因为其还包含着[和^等在ASCII字符表里排列在Z和a之间的字符。可以在一个字符集合中给出多个字符区间,例如[A-Za-z0-9]表示所有的数字和大小写字母
同时,可以使用[^]用于表示需要匹配的字符不在该定义的集合区间中。当要匹配“[]”本身的时候,需要使用来对其进行转义,即[]的形式表示[]本身。 - ps:对于转义字符,若要表示该字符本身,需要使用\来表示
- 以下的均为空白符(即原始文本的中的非打印字符)
- f用来匹配一个换页符
- 用来匹配一个换行符
- 用来匹配一个回车符
- 用来匹配一个制表符
- v用来匹配一个垂直制表符
- 需要注意的是, 是windows所使用的文本行结束标签,Unix和Linux系统只使用一个换行符来结束一个文本行;换句话说,在Unix/Linux系统上匹配空白行只用 即可,不需要加上 。还有一点是,f、n、r、t、v等字符本身是普通的字符,当用其来匹配空白符的时候,需要对其进行转义。
- 以下的字符用来匹配一些打印字符
- d用于匹配任意一个数字,其等价于[0-9]
- D用于匹配任意一个非数字字符,其等价于[^0-9]
- w用于匹配任意一个字母字符(包括大小写)和数字字符或下划线字符,等价于[0-9A-Za-z_]
- W用于匹配任意一个非字母(包括大小写)数字或下划线字符,等价于[^0-9A-Za-z_]
- s用于匹配任意一个空白字符,等价于[f v]
- S用于匹配任意一个非空白字符,等价于[^f v]
- x用于匹配某个特定字符的十六进制,例如x0A对应于ASCII码字符10,其效果等价于