Python:正则表达式---贪婪匹配

在正则表达式中,贪婪匹配是指匹配尽可能多的字符,而非贪婪匹配(也称为懒惰匹配最小匹配)则是匹配尽可能少的字符

.* 表示匹配任意数量的任意字符(除换行符外)。贪婪匹配会将尽可能多的字符都作为匹配结果返回。

正则表达式默认是贪婪匹配的,它会尽可能多地匹配满足条件的字符。例如,考虑以下示例:

import re

text = "Hello, my name is John. Nice to meet you, John."
pattern = r'my.*John'  # 贪婪匹配

match = re.search(pattern, text)
print(match.group())

输出:

在这里插入图片描述
在这个例子中,正则表达式 my.John 匹配了 “my” 后面的任意字符(包括空格、标点符号等),直到最后一个 “John”。如果我们想要匹配 “my” 后面的最小字符串,即遇到第一个 “John” 就停止匹配,我们可以使用非贪婪匹配的符号 ?,将 . 改为 .*? ,

.*? 表示非贪婪的匹配任意数量的任意字符。非贪婪匹配会尽可能少地匹配字符以满足匹配规则

如下所示:

import re

text = "Hello, my name is John. Nice to meet you, John."
pattern = r'my.*?John'  # 非贪婪匹配

match = re.search(pattern, text)
print(match.group())

输出:
在这里插入图片描述

这次,正则表达式 my.*?John 使用了非贪婪匹配,它只匹配到第一个满足条件的 “John” 前面的最小字符串 “my name is John”。通过使用非贪婪匹配,我们可以控制正则表达式尽可能少地匹配字符,从而得到更精确的结果。

参考:

https://blog.csdn.net/m0_66238629/article/details/131603444
  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值