简介
我们将会是用正则表达式进行基本的匹配将,编写的代码更加的简洁,然后转向更加强大的功能,诸如字符串的替换,以及创建你的字符类型。
使用正则表达式查找文本模式
import re number=re.complile(r'\d\d\d-\d\d\d-\d\d\d\d') #\d表示的是一个字符串 mo=number.search('my number is 445-555-1234') print('mo.group()')
正则表达式的使用的一般歩奏
import re number=re.complile(r'(\d\d\d)-(\d\d\d-\d\d\d\d)') #\d表示的是一个字符串 mo=number.search('my number is 445-555-1234') print('mo.group()') #第一个括号是group(1),第二各组是group(2),group(0)表示匹配整个文本
使用管道匹配多个分组
m=re.recompile(r'batman|tina fay')#希望匹配许多的表达式中的一个就可以匹配它,如果俩个都出现在被查找的字符串之中,第一次出现的文本将作为match返回的对象,也可以使用来匹配多个模式中的一部分。 m.search("batman and tine fey")
使用问号实现可选匹配
()?#表示的是可选匹配,匹配括号之前的字符零次或者一次 number=re.complile(r'(\d\d\d)?\d\d\d-\d\d\d\d') #\d表示的是一个字符串 mo=number.search('my number is 445-555-1234')
使用星号匹配零次或者多次
re.compile(r'bat(wo)*man')
使用加号匹配一次或者多次
re.compile(r'bat(wo)+man')#如果要匹配真正的加号的话在加号的前面加上倒斜杠实现转义:\+
使用花括号匹配特定的次数
re.compile(r'(wo){3}')
贪心和非贪心匹配
re.compile(r'(wo){3,5}')#贪心 re.compile(r'(wo){3,5}?')#非贪心
findall()方法:将返回的是一组字符串,包含被查找的字符串中的所有的匹配。
作为findall()方法的返回结果的总结:
字符分类
\d-->0-9的任何数字 \D-->0-9的的数字外的任何字符 \w-->任何字母数字或者下划线 \W-->除了字母数字和下划线以外的任何字符 \s-->空格、制表符、换行符 \S-->除了空格、制表符、以外的任何字符 插入字符(^)和美元字符($) 插入符号:表明必须发生在被查找文本开始处,末尾加上美元($)表示该字符串必须以这个正则表达式的模式结束。 使用点-星匹配到所有的字符(.*),(.*?)
正则表达式的复习
?匹配零次或者一次前面的分组 *匹配零次或者多次前面的分组 +匹配一次或多次前面的分组 {n}匹配n次前面的分组 {,m}匹配零次到m次前面的分组 {n,}n次或者更多前面的分组 {n,m}匹配至少n次,至多前面每次的分组 {n,m}?或*?或+?对前面的分组进行非贪匹配 ^spam 字符串必须要以spam开始 spam$字符串必须以spam结束 .匹配所有的字符,换行符 \d、\w和\s分别表示数字单词空格 \D、\W、\S表示的是数字单词空格之外的所有的字符 [abc]表示括号里的任意字符 [^abc]表示匹配不在括号里的任意字符 不区分大小写匹配要传入re.I作为第二个参数 robit=re.complile(r'cob',re.I) 用sub()来替换字符串