RE模块
re.findall
得到的是列表,查询出全部结果
re.search 对象的结果是匹配的对象
匹配上,直接打印**,是一个匹配对象
没有匹配上,返回none
想要看结果,借助group()
有结果返回匹配对象
没有结果则报错
re.match 只匹配开头
用法和search相同(想要看结果借助group()方法)
从开头匹配,无结果返回none
re.split 拆分匹配对象
例子: obj = re.split("\d","7ad1")
print(obj)
\d 匹配数字:
首尾为数字 表示一个“”,
其他内容紧挨的第一个数字省略,往后每一个数字为一个 “”,
split 优先级:
例子:re.split("(\d+)","34ab167abda8a")
print结果为 : ['', '34', 'ab', '167', 'abda', '8', 'a']
()代表把省略的元素显示出来
re.sub 替换匹配对象 旧的 ---> 新的
① re.sub("a","杨焱垚","healalo")
print结果为: he杨焱垚l杨焱垚lo
② re.subn("a","杨焱垚","healaloaaa") (n ---> num的缩写)
print结果为: ('he杨焱垚l杨焱垚lo杨焱垚杨焱垚杨焱垚', 5)
结果以元组的形式输出,n代表替换的次数
re.compile 正则表达式 (编译)----> 对象
下面的对象可以调用方法
为了防止报错,打印的时候 使用if判断一下输出
re.finditer 返回迭代器
匹配上了,结果返回迭代器
想要查看具体结果,使用for循环再使用group()方法,打印结果
(\1) 与第一个分组匹配 成对出现
例子: re.search(r"<(\w+)>(\w+)<(\1)>","<h1>hello<h1>")
写法一: r"<(\w+)>(\w+)<(\1)>"
写法二: "<(\w+)(\w+)<(\\1)>"
打印结果为:<h1>hello<h1>
(\1) 表示与第一个分组对应
有名分组: ?P<起的名字>
取名字
?P< > 与 (\1) 所实现的对应效果一样,都必须是成对出现
例如: re.search(r"(?P<id>\d)abc(?P=id)","8abc8")
打印结果为: 8abc8