牛骨文教育服务平台(让学习变的简单)
博文笔记

python贪婪匹配以及多行匹配

创建时间:2017-05-24 投稿人: 浏览次数:1773

1 非贪婪flag

>>> re.findall(r"a(d+?)", "a23b")
        ["2"]
>>> re.findall(r"a(d+)", "a23b")
        ["23"]

注意比较这种情况:

>>> re.findall(r"a(d+)b", "a23b")
        ["23"]
>>> re.findall(r"a(d+?)b", "a23b")
        ["23"]

2 如果你要多行匹配,那么加上re.S和re.M标志
re.S:.将会匹配换行符,默认.不会匹配换行符

>>> re.findall(r"a(d+)b.+a(d+)b", "a23b a34b")
        []
>>> re.findall(r"a(d+)b.+a(d+)b", "a23b a34b", re.S)
        [("23", "34")]
>>>

re.M:^$标志将会匹配每一行,默认^和$只会匹配第一行

>>> re.findall(r"^a(d+)b", "a23b a34b")
        ["23"]
>>> re.findall(r"^a(d+)b", "a23b a34b", re.M)
        ["23", "34"]

但是,如果没有^标志,

>>> re.findall(r"a(d+)b", "a23b a23b")
        ["23", "23"]
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。