python正则表达式匹配任何东西

时间:2012-09-12 22:19:37

标签: python regex

我的正则表达式不会对我的字符串做任何事情。

data = 'random\n<article stuff\n</article>random stuff'
datareg = re.sub(r'.*<article(.*)</article>.*', r'<article\1</article>', data, flags=re.MULTILINE)
print datareg

我得到了

random
<article stuff
</article>random stuff

我想要

<article stuff
</article>

1 个答案:

答案 0 :(得分:12)

re.MULTILINE实际上并没有按照您希望的方式制作正则表达式多行。

  

指定时,模式字符'^'匹配字符串的开头和每行的开头(紧跟在每个换行符之后);模式字符'$'在字符串的末尾和每行的末尾(紧接在每个换行符之前)匹配。默认情况下,'^'仅匹配字符串的开头,'$'仅匹配字符串的结尾,紧接在字符串末尾的换行符(如果有)之前。

re.DOTALL

  

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

flags=re.MULTILINE更改为flags=re.DOTALL,你的正则表达式就可以了。