栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python正则表达式用法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python正则表达式用法

目录

1. 基本知识

2.常用元字符

3. 量词

4.贪婪匹配和惰性匹配

5. findall、finditer、search、match、compile 用法

6. 给分组起别名


1. 基本知识

正则表达式(Regular Expression)是一种使用表达式对字符串进行匹配的语法规则,用于处理字符串。

优点:速度快、效率高、准确性高

语法规则:使用元字符排列组合用来匹配字符串。

  • 元字符:具有固定含义的特殊符号
  • 量词: 控制前面的元字符出现的次数

2.常用元字符
常用的元字符
元字符含义
.匹配除换行符(n、r)之外的任何单个字符。要匹配包括 'n' 在内的任何字符,请使用像"(.|n)"的模式。
w匹配字母或数字或下划线
s匹配任意的空白字符
d匹配数字
n匹配一个换行符
t匹配一个制表符
^匹配字符串的开始
$匹配字符串的技术
W匹配非字母或数字或下划线
D匹配非数字
S匹配非空白符
a|b匹配字符a或字符b
()匹配括号内的表达式,也表示一个组
[...]匹配字符组中的字符
[^...]匹配除了字符组中字符的所有字符

3. 量词

作用:控制前面的元字符出现的次数

量词
元字符含义
*重复零次或更多次,  等价于{0, }
+重复一次或更多次,等价于{1,}
?重复零次或一次
{n}重复n次
{n,}重复n次或更多次
{n, m}重复n到m次

4.贪婪匹配和惰性匹配
表达式含义
.*贪婪匹配(尽可能多的去匹配)
.*?惰性匹配(尽可能少的去匹配)

示例

str: "玩吃鸡游戏,晚上一起上游戏,干嘛呢, 打游戏啊"
reg: 玩.*?游戏
此时匹配的是: 玩吃鸡游戏

reg: 玩.*游戏
此时匹配的是: 吃鸡游戏,晚上一起上游戏,干嘛呢, 打游戏

5. findall、finditer、search、match、compile 用法

补充: 正则表达式式中使用括号就分组匹配,一个括号就是一个分组。

(1) findall和finditer :都可以获取所有匹配的结果,不同时是findall返回的是一个list,而finditer 返回的是一个迭代器

str1 = "我今年25岁, 我有2000万"
res = re.findall("d+", str1)
print(res) # ['25', '2000']

res = re.finditer("d+", str1)
print(type(res))
for item in res: # 从迭代器中拿到内容
    print(item.group()) # 从匹配的结果中拿到数据
# 25
# 2000

(2)search和match

    a. search:会扫描整个字符串匹配,只会返回第一次匹配到的内容,返回的是Match object ,需要使用group拿到数据

# search用法
res = re.search("d+", str1)
print(res) # 
print(res.group()) # 25

    b.match在匹配的时候,是从字符串的开头进行匹配,类似在正则前面加上^。只有在0位置匹配成功才有返回,否则返回None

res = re.match(r"d+", str1)
print(res) 

(3)compile 预加载,提前把正则对象加载完毕

s = """
    中国移动
    中国联通
"""

obj = re.compile(r"(.*?)")
# 直接把加载好的对象进行使用
res = obj.findall(s) 
print(res)

# [('10086', '中国移动'), ('10010', '中国联通')]

6. 给分组起别名

语法: (?P<名称>正则)

s = """
    中国移动
    中国联通
"""

obj = re.compile(r"d+)'>(?P.*?)")
res = obj.finditer(s)
for item in res:
    print(item.group("id"), item.group("name"))
    
    # 10086 中国移动
    # 10010 中国联通

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/828998.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号