欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

python爬虫—正则表达式的使用

时间:2023-05-23

python爬虫—正则表达式的使用
“”"
^匹配字符串的开头
$匹配字符串的结尾
.匹配任意字符除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行的任意字符
[…]用来表示一组字符,单独列出,[adas]匹配’a’‘d’;‘a’‘s’
[^…]匹配不在[]中的字符
re* 匹配0和或多和表达式
re+ 匹配一个或多个的表达式
re? 匹配0或1个由前面的正则表达式定义的片段,非贪婪方式
re{n}
re{n,} 精确匹配N个前面表达式
re{n,m} 匹配n到m次由前面的正则表达式定义的片段,贪婪方式
a b
(re) G匹配括号内的表达式,也表示一个组
(?imx) 正则表达式包含三种可选标志:i,m或x 之影响括号内的区域
(?#.)注释
w 匹配字母数字及下划线
W 匹配非字母数字及下划线
s 匹配任意空白字符,等价于【tnrf】
S 匹配任意非空字符
d 匹配任意数字,等价于[1-9]
D 匹配任意非数字
A 匹配字符串开始
Z 匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串
z 匹配字符串结束
G 匹配最后完成匹配的位置
b 匹配一个单词边界,也就是之单词和空格键的位置例如:erb 可以匹配never 中的er 但是不可以匹配verb的er
n,t 匹配一个换行符,匹配一个制表符
1…9 匹配第n个分组的内容、
10 匹配第n个分组的内容,如果经匹配,否则指的是八进制字符码的表达式
[u4e00-u9fa5] 中文

贪婪模式:总是匹配尽量多的字符】默认是贪婪的,非贪婪模式加个?
例如:正则表达式ab如果用于查找"abbbc" ,将找到’abbb’3而如果使用非贪婪模式ab?,将找到’a’

常用方法:
re.match() 尝试从字符串的起始位置
re.search
re.search扫描整个字符串并成功返回第一个成功的匹配
函数语法:re.search(pattern,string,flags=0)
re.sub
re.sub替换字符串re.sub(pattern,replace,string)
re.findall
re.findall查找全部 re.findall(pattern,string,flags=0)
“”"

实例演示:

import restr1 = "I Study Python3.7 Everyday "print("*****match****")m1 = re.match(r'I',str1)m2 = re.match(r"w",str1)m3 = re.match(r".",str1)m4 = re.match(r"D",str1)m5 = re.match(r"i",str1,re.I)m6 = re.match(r"S",str1)print(m1.group())print(m4.group())print(m5.group())

m = re.match(r"Study",str1)#匹配不到,因为match是从左开始匹配print(m)print("****re.search()*******")m1 = re.search(r"Study",str1)m3 = re.search(r"Sw+",str1)m2 = re.findall(r"Study",str1)print(m2[0])

m1 = re.search(r"Pw+.d",str1)print(m1.group())f1 = re.findall(r"y",str1)#findall是一个列表print(f1)import restr2 = 'bjsxt百度'# f1 = re.findall(r"[u4e00-u9fa5]w+",str2)# f2 = re.findall(r'(.+)',str2)f3 = re.findall(r'a herf ="(.+)">',str2)print(f3)

str2 = 'bjsxt百度'import restr2 = 'bjsxt百度'sul = re.sub(r"(.+)",r"1",str2)#1一个分组print(sul)

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。