我有一个像这样的字符串msg
msg = "abc 123 \n 456"
我想做这样的事情
m = re.match('abc (.*)',msg)
并让m.groups返回“123 \ n 456”
但目前只返回“123”
我如何捕获字符串的其余部分而不是直到行的结尾
答案 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)