search()方法
fa = re.compile(r'\d\d\d-\d\d\d-\d\d\d\d')
fb = fa.search('My number is 415-555-4242.').group()
合并写法:
re.search(r'as', 'sas123').group()
match()方法
re.match(r'as', 's as 123').group()
区别:match 只匹配开头文本,开头未匹配到返回None,用在账户注册输入等比较好
search是扫描整个文本,只要其中匹配到即可!search在长文本中查找比较好用,
也是最常用的
表达式,分三步,第一建立表达式,第二,传入字符串,第三匹备表达式
例子:
batRegex = re.compile(r'Bat(man|mobile|copter|bat)')
mo = batRegex.search('Batmobile lost a wheel')
a=mo.group()
print(a) #Bat开头,都有属性,(其中一个组匹配先匹配到)
b=mo.group(1)
print(b) #输出组1
#----------------------------------------------
()代表组
| 代表管道可以选项
\d+(\.\d+)? #匹配整数带小数的数写法
findall()方法
fa = re.compile(r'\d\d\d-\d\d\d-\d\d\d\d')
fb = fa.findall('Cell: 415-555-9999 Work: 212-555-0000')
-----------------------------------------------------------
新的写法:
re.findall(r'\d*','Cell: 415-555-9999 Work: 212-555-0000')
返回的是一个列表,把所有匹配到的都返回列表
列子:
batRegex = re.compile(r'Bat(wo)?man')
注:(wo)?代表可以选匹配,不知道该组wo是否存在都匹配,
存在匹配一次,不存在匹配一次 #0次1次
batRegex = re.compile(r'Bat(wo)*man')
注:(wo)*(称为星号)意味着“匹配零次或多次”,即星号之
前的分组是(wo)?的升级版 #0次1次N次
batRegex = re.compile(r'Bat(wo)+man')
注:(wo)+ 必须至少匹配一次,没有则返回None #1次N次
batRegex = re.compile(r'(wo){3}') #匹配3次
batRegex = re.compile(r'(wo){3,5}') #匹配3-5次范围之间
batRegex = re.compile(r'(wo){,3}') #匹配0-3次范围之间
batRegex = re.compile(r'(wo){5,}') #匹,5-无限N次范围之间
建立自己的字符分类
1.字符分类[aeiouAEIOU]将匹配所有元音字符,不论大小写。
2.字符分类[a-zA-Z0-9]将匹配所有小写字母、大写字母和数字。
3.插入字符[^....],就可以得到“非字符类”。[^aeiouAEIOU]即排除aeiouAEIOU字母外 所有其他字符
sub()方法,替换,删除,调用
txt = '<b class="cBold">'
#第一个参数为删除所有<b,第二个参数是替换所有对应删除的,第三个为 str字符串值
fa= re.sub('<b','',txt)
print(fa)
split()方法,切割
ret = re.split(r':| ','info:xiaoZhang 33 shandong')
print(ret)
#返回以:|空格符号处切割,返回列表['info','xiaoZhang','33','shangdong']
2.1 字符分类
\d 是正则表达式(0|1|2|3|4|5|6|7|8|9)的缩写。
\D 除 0 到 9 的数字以外的任何字符
\w 任何字母、数字或下划线字符(可以认为是匹配“单词”字符)
\W 除字母、数字和下划线以外的任何字符
\s 空格、制表符或换行符(可以认为是匹配“空白”字符)
\S 除空格、制表符和换行符以外的任何字符
注意:字符分类对于缩短正则表达式很有用。字符分类[0-5]只匹配数字 0 到 5,这比
输入(0|1|2|3|4|5)要短很多。
插入^字符和美元$字符
r'^Hello'必须以'Hello'开始的字符串 匹配以^开始匹配,如果不是Hello开
始的文本,无法匹配
r'\d$'必须以数字 0 到 9 结束的字符串 匹配以$结束匹配,如果不是以
数字结尾的,无法匹配
通配字符
.(点)字符称为“通配符”。它匹配除了换行之外的所有
字符。
用点.*匹配所有字符