正则表达式—使用元字符
1. 使用元字符
1.1对特殊字符转义
在元字符前加上反斜杠就可以对其进行转义:转义序列\.将匹配.本身,转义序列\[将匹配[本身。
每个元字符都可以通过给他加上一个反斜杠前缀的方法来转义,如此得到的转义序列将匹配那个字符本身而不是它特殊的元字符含义。
例1
#文本
var myAarray = new Array();
...
if (myArray[0] == 0) {
...
}
#正则表达式
myArray\[0\]
#结果
var myAarray = new Array();
...
if (myArray[0]== 0) {
...
}
如果我们想查找的不仅仅是myArray[0]还包括myArray[1]、myArray[2]之类[]中包含数组元素0到9的,我们可以构造如下正则表达式:
myArray\[[0-9]\]
如果我们想把包含反斜杠(\)的路径文件中所有的反斜杠找出,就需要对\进行转义,否则会出错。
例2
#文本
C:\Users\admin\Desktop\python_for_work\spyder_worker
#正则表达式
\\
#结果
C:
\Users
\admin
\Desktop
\python_for_work
\spyder_worker
1.2匹配空白字符
在进行正则表达式搜索时,我们经常会遇到需要对原始文本里的非打印空白字符进行匹配的情况,
这类字符很难被直接输入到一个正则表达式中,但我们可以使用下表中列出的特殊元字符来输入他们。
[\b] | 回退(并删除)一个字符 |
\f | 换页符 |
\n | 换行符 |
\r | 回车符 |
\t | 制表符 |
\v | 垂直制表符 |
1.3匹配特定的字符类别
字符集合是最常见的匹配形式,而一些常用的字符集合可以用特殊的元字符来代替,这些元字符匹配的是某一类别的字符。
\d | 任何一个数字字符,等价于[0-9] |
\D | 任何一个非数字字符,等价于[^0-9] |
\w | 任何一个字母数字字符(大小均可)或下划线字符,等价于[A-Za-z0-9_] |
\W | 任何一个非字母数字字符或下划线字符,等价于[^A-Za-z0-9_] |
\s | 任何一个空白字符,等价于[\f\n\r\t\v] |
\S | 任何一个非空白字符,等价于[^\f\n\r\t\v] |
例1
#文本
1121
A1S2D3
12374
G3H2J3
K1K1K1
GHJKUH
#正则表达式
\w\d\w\d\w\d
#结果
1121
A1S2D3
12374
G3H2J3
K1K1K1
GHJKUH
1.4使用POSIX字符类
POSIX字符类是许多(但不是所有)正则表达式实现都支持的一种简写形式。
[:digit:] | 任何数字,等价于[0-9] |
[:xdigit:] | 任何十六进制数字,等价于[a-Fa-f0-9] |
[:alpha:] | 任何字母,等价于[A-Za-z] |
[:lower:] | 任何小写字母,等价于[a-z] |
[:upper:] | 任何大写字母,等价于[A-Z] |
[:alnum:] | 任何字母或数字,等价于[A-Za-z0-9] |
[:cntrl:] | ASCII控制字符(ASCII 0~31和 ASCII 127) |
[:punct:] | 不属于[:alnum:]和[:cntrl:]的任何字符 |
[:blank:] | 空格或制表符,等价于[\t ] |
[:space:] | 任何空白字符,包括空格,等价于[\f\n\r\t\v ] |
[:print:] | 任何可打印字符 |
[:graph:] | 同[:print:],但不包括空格 |