zoukankan      html  css  js  c++  java
  • 【python cookbook】【字符串与文本】8.编写多行模式的正则表达式

    问题:用正则表达式对一段文本块做匹配,但是希望在进行匹配时能够跨越多行

    解决方案:

    1、正则表达式添加对换行符的支持;

    2、re.compile()函数一个有用的标记-re.DOTALL使得正则表达式中的句点(.)可以匹配所有的字符,也包括换行符;

    如上问题一般出现在希望使用句点(.)来匹配任意字符,但是忘记了句点并不能匹配换行符时。例如,假设想匹配C语言风格的注释:

    import re
    
    text = '''/* this is a
    ...             multiline comment */
    ...'''
    comment = re.compile(r'/*(.*?)*/')
    print(comment.findall(text))
    
    comment2 = re.compile(r'/*((?:.|
    )*?)*/') #(?:.|
    )指定了一个非捕获组(即,这个组只做匹配但不捕获结果,也不会分配组号)
    print(comment2.findall(text))
    
    comment_dotall=re.compile(r'/*(.*?)*/',re.DOTALL)
    print (comment_dotall.findall(text))
    >>> ================================ RESTART ================================
    >>> 
    []
    [' this is a
    ...             multiline comment ']
    ['* this is a
    ...             multiline comment ']
    >>> 
  • 相关阅读:
    CE工具里自带的学习工具--第三关
    CE工具里自带的学习工具--第二关
    CE工具里自带的学习工具--第一关
    双向链表
    双向循环链表
    单向循环链表
    单链表
    动手动脑———异常处理
    动手动脑——继承与多态
    类与对象——动手动脑
  • 原文地址:https://www.cnblogs.com/apple2016/p/5790890.html
Copyright © 2011-2022 走看看