为什么这个常规不匹配使用python的html

时间:2011-05-17 04:00:46

标签: python regex

html是:

<div style="background-color:#A7A7A7;text-align:center;">
<span style="color:#FFFFFF;">{{rk_user.name}}のステータス</span>
</div>

我的常规是:

a = r'''
<div style="background-color:#([a-z0-9]+);text-align:center;">
\s*<span style="color:#(.+?);">(.+)</span>
</div>
'''

但是这个Regular与html不匹配,

那有什么不对?

感谢

5 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

你应该使正则表达式不区分大小写,因为颜色是#A7A7A7并且你匹配#a7a7a7。

您可以在许多网站上试用:http://regexpal.com/

答案 2 :(得分:0)

至少,您在颜色方面存在区分大小写的问题。另外,您可能想要考虑BoltClock的评论。

答案 3 :(得分:0)

像@BoltClock提到的那样,不建议像这样使用正则表达式。如果不是现在,有时你会后悔的。有很多角落案例会使正则表达式变得复杂,有时也毫无用处。

无论如何,粗略地看一下,对于背景颜色,您使用[a-z0-9]只会匹配小写字母。但样本有大写。您可能也想要大写[a-zA-Z0-9]对于其他颜色,为什么不使用相同的?为何选择(.+?)

答案 4 :(得分:0)

除了许多其他人所说的内容之外,你可能还想使用re.UNICODE标志,因为看起来你有一些日文字符。