辽宁旅游网站开发,目前网站建设用哪种语言,dw网页设计免费下载,网站建设收费标准渠道正则表达式基础
元字符
B站教学视频#xff1a; 正则表达式元字符基本使用 量词 贪婪匹配和惰性匹配
惰性匹配如下两张图#xff0c;而 .* 就表示贪婪匹配#xff0c;即尽可能多的匹配到符合的字符串#xff0c;如果使用贪婪匹配#xff0c;那么结果就是图中的情况三 p…正则表达式基础
元字符
B站教学视频 正则表达式元字符基本使用 量词 贪婪匹配和惰性匹配
惰性匹配如下两张图而 .* 就表示贪婪匹配即尽可能多的匹配到符合的字符串如果使用贪婪匹配那么结果就是图中的情况三 python中re模块
re模块的常用方法
import re# findall(正则表达式 待匹配的字符串) - 符合正则表达式的内容以列表的形式返回
# 含义匹配字符串中所有符合正则表达式的内容以列表的形式返回
res_findall re.findall(r\d, 中国移动10086中国联通10010)
print(res_findall) # [10086, 10010]# re.finditer(正则表达式 待匹配的字符串) - 符合正则表达式的内容以迭代器的形式返回
# 含义匹配字符串中所有符合正则表达式的内容以迭代器的形式返回
res_finditer re.finditer(r\d, 中国移动10086中国联通10010)
print(res_finditer) # callable_iterator object at 0x000001CB2875B340
for item in res_finditer:下面两行输出语句的输出结果如下re.Match object; span(5, 10), match1008610086re.Match object; span(16, 21), match1001010010item 中还有其他的方法如item.start()/item.end()分别表示匹配到的字符串在原字符串中的起始索引和结束索引print(item) # 得到match对象print(item.group()) # 得到匹配的字符串# re.search(正则表达式 待匹配的字符串) - 符合正则表达式的内容返回match对象
# 含义匹配字符串中第一个匹配到的符合正则表达式的内容返回match对象
res_search re.search(r\d, 中国移动10086中国联通10010)
print(res_search) # re.Match object; span(5, 10), match10086
print(res_search.group()) # 10086# 上述三种方法都是全文匹配而match是从头开始匹配
# re.match(正则表达式 待匹配的字符串) - 符合正则表达式的第一个字符串内容返回match对象
# 含义从待匹配的字符串的第一个字符开始匹配将匹配到的第一个结果返回返回的是match对象
res_match re.match(r\d, 中国移动10086中国联通10010)
print(res_match) # None字符串开头不是数字所以等于匹配不成功结果为空
# print(res_match.group()) # 报错
res_match re.match(r\d, 10086中国联通10010)
print(res_match) # re.Match object; span(0, 5), match10086
print(res_match.group()) # 10086# 预加载
# 应用场景在爬虫中想要从网页中匹配到想要的内容匹配的正则表达式可能会很复杂
# 而又多次的使用到该正则表达式则可以预加载正则表达式
# 如下好处就是该正则可以反复使用
obj re.compile(r\d)
res1 obj.findall(中国移动10086中国联通10010)
res2 obj.finditer(中国移动10086中国联通10010)
res3 obj.search(中国移动10086中国联通10010)
res4 obj.match(中国移动10086中国联通10010)
分组匹配
s div classjay周杰伦/divdiv classjj林俊杰/div# (?Pname.*?) 分组匹配P为大写相当于把括号中的.*?匹配到的内容给变量name
# 然后通过item.group(name)获取到name的值
# 只要把想要单独获取的内容按以上形式(?Pxxx正则表达式) 即可获取
# re.S 的作用就是让 . 也可以匹配到换行符
# flags 是re模块中compile、match、findall等方法的一个参数具体用法可以百度
obj re.compile(rdiv class.*?(?Pname.*?)/div, re.S)
res obj.finditer(s)
print(res) # callable_iterator object at 0x0000020F2E89AEC0
for item in res:输出结果如下re.Match object; span(5, 31), matchdiv classjay周杰伦/divdiv classjay周杰伦/div周杰伦re.Match object; span(36, 61), matchdiv classjj林俊杰/divdiv classjj林俊杰/div林俊杰print(item) # re.Match object; span(5, 31), matchdiv classjay周杰伦/divprint(item.group()) # div classjay周杰伦/divprint(item.group(name)) # 周杰伦
注关于re模块方法中的flags参数作用可以百度一下