正则表达式概述
正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本。
Regular Expression的“Regular”一般被译为“正则”、“正规”、“常规”。此处的“Regular”即是“规则”、“规律”的意思,Regular Expression即“描述某种规则的表达式”之意。
re模块操作
1 # 导入re模块
2 import re
3
4 # 使用match方法进行匹配操作
5 result = re.match(正则表达式,要匹配的字符串)
6
7 # 如果上一步匹配到数据的话,可以使用group方法来提取数据
8 result.group()
re.match是用来进行正则匹配检查的方法,若字符串匹配正则表达式,则match方法返回匹配对象(Match Object),否则返回None(注意不是空字符串"")。
匹配对象Macth Object具有group方法,用来返回字符串的匹配部分。
如匹配以abc开始的字符:
1 import re
2 ret=re.match('abc','abckok')
3 print(ret.group())
4 #结果:
5 #abc
表示字符
字符
功能
.
匹配任意1个字符(除了\n)
[ ]
匹配[ ]中列举的字符
\d
匹配数字,即0-9
\D
匹配非数字,即不是数字
\s
匹配空白,即 空格,tab键
\S
匹配非空白
\w
匹配单词字符,即a-z、A-Z、0-9、_
\W
匹配非单词字符
如:“a1d45d” 匹配出a1
1 import re
2 ret=re.match('\w\d','a1d45d')
3 print(ret.group())
4 #结果:
5 #a1
关于转义
在正则表达式中,有很多有特殊意义的是元字符,比如\d和\s等,如果要在正则中匹配正常的"\d"而不是"数字"就需要对"\"进行转义,变成'\\'。
在python中,无论是正则表达式,还是待匹配的内容,都是以字符串的形式出现的,在字符串中\也有特殊的含义,本身还需要转义。所以如果匹配一次"\d",字符串中要写成'\\d',那么正则里就要写成"\\\\d",这样就太麻烦了。这个时候我们就用到了r'\d'这个概念,此时的正则是r'\\d'就可以了。
如:
1 import re
2 ret=re.match(r'c:\\',"c:\\user\\")
3 print(ret.group())
4 #结果:
5 #c:\
表示数量
如果要匹配多个数字,用re.match(r'\d\d\d\d\d\d\d\d\d',"11111111111abc"),这种写法会把人折磨死,re模块对数量也有相应的规则
匹配多个字符的相关格式
字符
功能
*
匹配前一个字符出现0次或者无限次,即可有可无
+
匹配前一个字符出现1次或者无限次,即至少有1次
?
匹配前一个字符出现1次或者0次,即要么有1次,要么没有
{m}
匹配前一个字符出现m次<