zoukankan      html  css  js  c++  java
  • 正则表达式编译和DOTALL小结

    常见方法

    !/usr/bin/python3
    # -*- coding: utf-8 -*-
    
    import re
    
    string = '123abc123'
    pattern = re.compile('d+')
    
    # result = pattern.match(string)    # match  开头匹配, 只匹配一次
    # result = pattern.search(string)    # search 全局匹配, 只匹配一次
    # result = pattern.findall(string)    # findall 返回是列表,列表中是所有的匹配结果
    
    result = pattern.finditer(string)    # finditer 返回是迭代对象,内部存放了匹配对象
    for data in result:
        print(data)
    
    # print(result)
    
    • findall 把所有的结果匹配完成了才返回,数量小可以使用,但是数据量大不推荐使用
    • finditer 每匹配一个就返回一个,节省内存,适合数据量大的时候使用

    re.compile()

    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    import re
    
    string = '123abc'
    
    string_list = ["123abc","123abc123"]
    
    
    # print(re.findall('d+',string))
    
    
    # pattern = re.compile('d+')  #1. 编译生成匹配规则
    # print(pattern.findall(string))  # 2. 匹配数据
    
    
    pattern = re.compile('d+')
    for string in string_list:
        print(pattern.findall(string))
    
    • re.findall ==> 1. 编译生成匹配规则 2. 匹配数据
      会创建上下文环境,吃性能和内存
    • re.compile()创建匹配规则,可以重复利用

    DOTALL模式

    • re.DOTALL == re.S == re.RegexFlag.DOTALL == re.RegexFlag.S
    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    
    import re
    string = '''
        abcd
        abcd
    '''
    pattern = re.compile('a(.*?)d')    # 非贪婪 ['bc', 'bc']
    pattern = re.compile('a(.*)d')    # 贪婪 ['bc', 'bc']
    
    pattern = re.compile('a(.*)d',re.RegexFlag.S)    # DOTALL模式 ['bcd
        abc']
    
    print(pattern.findall(string))
    
    
    • (.*) 贪婪模式 -> 尽可能多的匹配
    • (.*?) 非贪婪模式 -> 一旦匹配
    • . 匹配的除' '以外所有字符,设置 DOTALL模式,让 . 匹配包括 ' ' 所有字符

    忽略大小写

    • re.IGNORECASE == re.I == re.RegexFlag.IGNORECASE == re.RegexFlag.I
    # 多模式共同支持使用 |
    pattern = re.compile('a(.*)d',re.DOTALL | re.IGNORECASE)
    

    原始字符串

    string = r"ab
    cd"
    
    print(string)    # "ab
    cd"
    

    回退符

    string = "abcdef"
    print(string)    # "abef"
    
  • 相关阅读:
    Codeforces 120F Spiders
    Codeforces 509C Sums of Digits
    Topcoder SRM 497 DIV2 1000 MakeSquare
    codeforces 22B Bargaining Table
    Codeforces 487B Strip
    Codeforces 132C Logo Turtle
    关闭窗口对话框提示 messagedlg应用和showmodal的使用
    如何让窗口显示在电脑屏幕中间
    delphi项目程序输出编译成应用程序文件
    delphi程序项目创建和保存
  • 原文地址:https://www.cnblogs.com/oklizz/p/12238505.html
Copyright © 2011-2022 走看看