以下代码首先需执行:

    1. import re

    示例1
    匹配出数字后面的0:

    1. >>> re.fullmatch('(\d+)(0*)', '102300').groups()
    2. ('102300', '')

    由于\d+采用贪婪匹配,直接把后面的0全部匹配了,0*就只能匹配空字符串了。
    加个?就让\d+采用非贪婪匹配,把后面的0匹配出来:

    1. >>> re.fullmatch('(\d+?)(0*)', '102300').groups()
    2. ('1023', '00')

    示例2
    比如有一批需要提取出用户名的邮件地址:

    1. addrs = ['<Tom Paris> tom@voyager.org', 'tom@voyager.org', 'bill.gates@microsoft.com']

    我们希望提取出其中的用户名: Tom Paris 、 tom 和 bill.gates 。
    假如采用默认的贪婪模式,为了匹配开头的<之类的字符,则必须使用非单词字符\W:

    1. for addr in addrs:
    2. print(re.match('\W*([\w\s\.]+)', addr).group(1))

    但采用非贪婪匹配,开头我们就可以直接使用任意字符 . :

    1. for addr in addrs: print(re.match('.*?([\w\s\.]+)', addr).group(1))

    返回的结果都是:

    1. Tom Paris tom bill.gates