代码拉取完成,页面将自动刷新
# 正则表达式学习
import re
# regular expression 是一种表达式对字符串进行匹配的语法规则
# 正则的语法 使用元字符进行排列组合用匹配字符串
# 在线中国 网站可以帮助学习
# 元字符
# . 处换行符 \n以外 所有的字符
# \w 字母 数字 及 _ \W 反义
# \d 数字 \d[5] 意为5个数字为一组 \D 反义
# \s 任意空白符 \S 反义
# ^ 匹配字符串的开始
# $ 匹配字符串的结束
# ()匹配括号内的表达式,也表示一个组
# a|b 匹配字符a或字符b
# [...]匹配字符组中的字符 eg[a-z]匹配所有小写字母
# [^...]匹配除了字符组中的所有字符
# *重复0次或更多次
# +重复1次或更多次
# ?重复0次或1次
# {n}重复n次
# {n,}重复n次或更多次
# .* 贪婪
# .*? 惰性 尽可能少的匹配内容
lst=re.findall(r'\d+','我的电话号码是:10086,我是:10010')
# findall 返回一个列表 匹配字符串中所有符合正则的内容
print(lst)
# finditer 返回迭代器
it=re.finditer(r'\d+','我的电话号码是:10086,我是:10010')
for i in it:
print(i.group())
# group()即从迭代器中拿出内容
# search返回的结果是match对象,拿数据需要 .group()
# search检索到一个结果就返回 即 找不到11010
s=re.search(r'\d+','我的电话号码是:10086,我是:10010')
print(s.group())
# match是重头开始匹配
# s=re.match()
# 预加载正则表达式
obj=re.compile(r'\d+')
# 有点 obj可以反复使用
ret=obj.finditer('我的电话号码是:10086,我是:10010')
for i in ret:
print(i.group())
# 重点 从正则表达式中 提取
s="""
<div class='jay'><span id='1'>郭麒麟</span></div>
<div class='jj'><span id='2'>宋铁</span></div>
<div class='jolin'><span id='3'>大聪明</span></div>
<div class='sylar'><span id='4'>范思哲</span></div>
<div class='tory'><span id='5'>胡说八道</span></div>
"""
obj=re.compile(r"<div class='.*?'><span id='\d+'>(?P<theone>.*?)</span></div>",re.S)#re.S 意为 让.能匹配换行符
# (?P<thename>xxxxxx) 注 thename 为从正则表达式中提取的东西
result=obj.finditer(s)
for i in result:
print(i.group('theone'))
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。