使用换行符Python查找字符串的其余部分

时间:2014-07-28 22:18:47

标签: python regex string match newline

我有一个像这样的字符串msg

msg = "abc 123 \n  456"

我想做这样的事情

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

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

但目前只返回“123”

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

  

re.DOTALL:'.'特殊字符与任何字符匹配,包括换行符;如果没有此标记,'.'将匹配换行符之外的任何内容。

所以这应该做你想要的:

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