【问题标题】:Finding the rest of the string with newlines Python使用换行符 Python 查找字符串的其余部分
【发布时间】:2014-09-20 05:33:33
【问题描述】:

我有一个这样的字符串消息

msg = "abc 123 \n  456"

我想做这样的事情

m = re.match('abc (.*)',msg)

并让 m.groups 返回“123 \n 456”

但目前它只返回“123”

我将如何捕获字符串的其余部分,而不仅仅是直到行尾

【问题讨论】:

    标签: python regex string match newline


    【解决方案1】:

    使用s (dotall) 修饰符强制点匹配所有字符,包括换行符。

    >>> import re
    >>> msg = "abc 123 \n  456"
    >>> m = re.match(r'(?s)abc (.*)', msg)
    >>> m.group(1)
    '123 \n  456'
    

    【讨论】:

      【解决方案2】:

      您需要使用re.DOTALL 标志,否则. 正则表达式原子将无法匹配换行符。

      re.DOTALL: 使'.' 特殊字符完全匹配任何字符,包括换行符;如果没有这个标志,'.' 将匹配任何内容除了换行符。

      所以这应该做你想要的:

      m = re.match('abc (.*)', msg, re.DOTALL)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-08
        相关资源
        最近更新 更多