Python正则表达式' \ s' vs' \\ s'

时间:2014-05-29 05:47:38

标签: python regex

我有简单的表达式\s\\s。两个表达式都匹配This is Sparta!!

>>> re.findall('\\s',"This is Sparta")
[' ', ' ']
>>> re.findall('\s',"This is Sparta")
[' ', ' ']

我在这里很困惑。 \用于转义特殊字符,\s表示空格,但两者如何在此处起作用?

2 个答案:

答案 0 :(得分:5)

不要混淆python级别的字符串转义和正则表达式字符串转义。由于s不是python级别的可逃避字符,因此解释器将“\ s”这样的字符串理解为两个字符“\”和“s”。将“s”替换为“n”(例如),并将其理解为换行符。

'\s' == '\\s'
True
'\n' == '\\n'
False

答案 1 :(得分:1)

如果转义字符有效,

\仅转义以下字符

>>> len('\s')
2
>>> len('\n')
1

比较
>>> len('\\s')
2
>>> len('\\n')
2