python正则表达式记录

python支持很多通配符和转义字符作为正则的合法字符,记录少许

.        匹配任意单个字符
*        匹配前面的表达式或则字符 0次或者多次
+        匹配前面的表达式或者字符 至少一次
?        匹配前面的表达式或则字符 0次或者1次
[A-Z]    任选一个
()       编组
{n}      重复n次
{n,}     重复n到多次
{n,m}    重复n到m次
a|b      或者        

python使用 re 模块进行正则操作

import re

使用 re 模块进行正则匹配的时候注意区分贪婪匹配惰性匹配。

#       eg:玩儿吃鸡游戏,晚上一起上游戏。干嘛呢?打游戏啊。
.*         贪婪匹配(玩儿.*游戏-> 玩儿吃鸡游戏,晚上一起上游戏。干嘛呢?打游戏)
.*?        惰性匹配(玩儿.*?游戏> 玩儿吃鸡游戏)

python 正则匹配方法记录  findall()、finditer()、search()、match() ... ...

import re
# findall方法 匹配字符串中所有的符合正则的内容 返回 list
list = re.findall(r"\d+", "我的电话是:10086。 另一个电话是10010。")
print(list)
# finditer方法 匹配字符串中所有的内容 返回迭代器 从迭代器拿到内容
iter = re.finditer(r"\d+", "我的电话是:10086。 另一个电话是10010。")
for i in iter:
    print(i)
    # group() 从迭代器拿到内容
    print(i.group())
    # i.groupdict() 将所有的命名的group作为字典结构存储

# search 方法返回的是 match 对象。 拿数据需要 .group()。  找到一个结果就返回
s = re.search(r"\d+", "我的电话是:10086。 另一个电话是10010。")
print(s.group())

# match 方法是从头开始匹配
ma = re.match(r"\d+", "我的电话是:10086。 另一个电话是10010。")
print(ma)  # None
print("=================")
# 预加载正则表达式
obj = re.compile(r"\d+")
l = obj.findall("我的电话是:10086。 另一个电话是10010。")
print(l)

# 下面的 (?P<groupName>) 十分重要
# 通过命名分组 group('groupName') 获取匹配到的数据 (?P<groupName>) 命名语法 group

 

posted @ 2022-05-07 23:07  不要西红柿  阅读(32)  评论(0编辑  收藏  举报