我的正则表达式不会对我的字符串做任何事情。
蟒
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>
答案 0 :(得分:12)
re.MULTILINE
实际上并没有按照您希望的方式制作正则表达式多行。
指定时,模式字符
'^'
匹配字符串的开头和每行的开头(紧跟在每个换行符之后);模式字符'$'
在字符串的末尾和每行的末尾(紧接在每个换行符之前)匹配。默认情况下,'^'
仅匹配字符串的开头,'$'
仅匹配字符串的结尾,紧接在字符串末尾的换行符(如果有)之前。
使
'.'
特殊字符与任何字符匹配,包括换行符; 没有此标记,'.'
将匹配除换行符之外的任何内容。
将flags=re.MULTILINE
更改为flags=re.DOTALL
,你的正则表达式就可以了。