鉴于该字符串:
\n \n text1\n \ttext2\n Message: 1st message\n some more text\n \n \n Message: 2dn message\n\n \t\t Message: 3rd message\n text3\n
我想从多行字符串中提取消息(令牌是'消息:').我应该使用什么正则表达式来捕获这3组:
我尝试了很多东西,但我可以让表达式工作,因为字符串是一个多行字符串.
我的程序是在python 2.6中,但我认为它使用的语言并没有太大的区别......
>>> re.findall('Message: (.+?)$', s, re.M)
['1st message', '2dn message', '3rd message']
Run Code Online (Sandbox Code Playgroud)
指定时,模式字符
'^'匹配字符串的开头和每行的开头(紧跟在每个换行符之后); 并且模式字符'$'在字符串的末尾和每行的末尾(紧接在每个换行符之前)匹配.默认情况下,'^'仅匹配字符串的开头,并且'$'仅匹配字符串的结尾,紧接在字符串末尾的换行符(如果有)之前.
(.+?)$ 匹配至少一个字符,直到字符串字符的最近端.
编辑:确实简单的版本也会起作用:
>>> re.findall('Message: (.+)', s)
['1st message', '2dn message', '3rd message']
Run Code Online (Sandbox Code Playgroud)
我很惊讶它不在你试过的那么多东西的列表中:)