s = re.sub(r"<style.*?</style>", "", s)
Run Code Online (Sandbox Code Playgroud)
这段代码不应该删除s字符串中的样式吗?为什么不起作用?我想删除以下代码:
<style type="text/css">
body { ... }
</style>
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?
不,这是必要的re.DOTALL标志!
re.DOTALL
制作'.' 特殊字符匹配任何字符,包括换行符; 没有这个标志,'.' 将匹配除换行符之外的任何内容.
http://docs.python.org/library/re.html#re.DOTALL
在某些情况下,可能需要在字符串的区域中具有匹配所有字符(包括换行符)的点,并且在sting的另一个区域中具有仅匹配非换行符的点.但是使用标志re.DOTALL不允许这样做.
在这种情况下,知道以下技巧是有用的:使用[\ s\S]来表示每个字符
import re
s = '''alhambra
<style type="text/css">
body { ... }
</style>
toromizuXXXXXXXX
YYYYYYYYYYYYYY'''
print s,'\n'
regx = re.compile("<style[\s\S]*?</style>|(?<=ro)mizu.+")
s = regx.sub('AAA',s)
print s
Run Code Online (Sandbox Code Playgroud)
结果
alhambra
<style type="text/css">
body { ... }
</style>
toromizuXXXXXXXX
YYYYYYYYYYYYYY
alhambra
AAA
toroAAA
YYYYYYYYYYYYYY
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
185 次 |
| 最近记录: |