1 Star 0 Fork 0

xyislove/python-test

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
re-std.py 2.17 KB
一键复制 编辑 原始数据 按行查看 历史
xyislove 提交于 2021-11-10 20:58 . 第二版
# 正则表达式学习
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'))
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/xyislove/python-test.git
git@gitee.com:xyislove/python-test.git
xyislove
python-test
python-test
master

搜索帮助