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

use*_*957 9 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
Run Code Online (Sandbox Code Playgroud)

我明白了

random
<article stuff
</article>random stuff
Run Code Online (Sandbox Code Playgroud)

我想要

<article stuff
</article>
Run Code Online (Sandbox Code Playgroud)

Ble*_*der 12

re.MULTILINE 实际上并没有按照你想要的方式制作你的正则表达式多行.

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

re.DOTALL 作用:

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

更改flags=re.MULTILINEflags=re.DOTALL你的正则表达式会工作.