zoukankan      html  css  js  c++  java
  • re 正则匹配的非贪婪匹配

    非贪婪匹配

    将尽可能少的匹配内容,当?出现在其他的重复次数后面时会将贪婪模式改为非贪婪模式。

    ?

    abc.*?

    abc.+?


    非贪婪匹配:尽可能少的匹配
    {n,}?
    {,n}?
    {n,m}?
    *? # *号表示 *号前面的字符出现0--无数个 ?号表示最少匹配
    +?   # +号表示 +号前面的字符出现1--无数个
    ?? # ??表示0--1个

    print(re.findall(r'ab{0,}', 'aababbabbb')) # ['a', 'ab', 'abb', 'abbb']
    print(re.findall(r'ab{0,}?', 'aababbabbb')) # ['a', 'a', 'a', 'a']

    print(re.findall(r'ab{,3}', 'aababbabbb')) # ['a', 'ab', 'abb', 'abbb']
    print(re.findall(r'ab{,3}?', 'aababbabbb')) # ['a', 'a', 'a', 'a']

    print(re.findall(r'ab{1,3}', 'aababbabbb')) # ['ab', 'abb', 'abbb']
    print(re.findall(r'ab{1,3}?', 'aababbabbb')) # ['ab', 'ab', 'ab']

    print(re.findall(r'ab*', 'aababbabbb')) # ['a', 'ab', 'abb', 'abbb']
    print(re.findall(r'ab*?', 'aababbabbb')) # ['a', 'a', 'a', 'a']

    print(re.findall(r'ab+', 'aababbabbb')) # ['ab', 'abb', 'abbb']
    print(re.findall(r'ab+?', 'aababbabbb')) # ['ab', 'ab', 'ab']

    print(re.findall(r'ab?', 'aababbabbb')) # ['a', 'ab', 'ab', 'ab']
    print(re.findall(r'ab??', 'aababbabbb')) # ['a', 'a', 'a', 'a']


    print(re.findall(r'', '')) # ['']
    print(re.findall(r'a{0}', 'a')) # ['', '']

    # 非贪婪匹配结合单个匹配结果是没有任何意义的
    print(re.findall(r'b*?', 'bbbbbbbb'))
    print(re.findall(r'(?:ab)*?', 'bbbbbbbb'))

    # 非贪婪匹配的应用场景,正则一定会有首尾标识,中间匹配的结果会有非贪婪匹配的语法
    s = '<a>abc</a><a></a>'
    print(re.findall(r'<.*>', s)) # ['<a>abc</a><a></a>']
    print(re.findall(r'<.*?>', s)) # ['<a>', '</a>', '<a>', '</a>']

    print(re.findall(r'<a>(.*)</a>', s)) # ['abc</a><a>']
    print(re.findall(r'<a>(.*?)</a>', s)) # ['abc', '']
  • 相关阅读:
    LightOJ 1344 Aladdin and the Game of Bracelets
    CF 1132A,1132B,1132C,1132D,1132E,1132F(Round 61 A,B,C,D,E,F)题解
    CF 1130A 1130B 1130C1129A1 1129A2 1129B(Round542A B C D1 D2 E)题解
    CF 1131A,1131B,1131C,1131D,1131F(Round541 A,B,C,D,F)题解
    CoderForces-Round60D(1117) Magic Gems
    CoderForces Round60-(1117A,1117B,1117C题解)
    LightOJ 1038 Race To 1 Again(概率DP)
    XHXJ'S LIS(数位DP)
    CF 55D Beautiful Numbers(数位DP)
    LightOJ 1229 Tablecross
  • 原文地址:https://www.cnblogs.com/liguodeboke/p/10846845.html
Copyright © 2011-2022 走看看