为什么单词边界正则表达式有双反斜杠,但单反斜杠适用于其他表达式?

时间:2018-05-23 20:21:01

标签: python regex

示例:

def searchResult(expr, inputStr):
    if (re.search(expr, inputStr)):
        return True
    return False

print(searchResult("\s", "the quick brown fox")) # True
print(searchResult("\bfox", "the quick brown fox")) # False
print(searchResult("\\bfox", "the quick brown fox")) # True

对于字边界,我需要双反斜杠"\\b",但对于空格字符,只需要单个反斜杠"\s"。为什么字边界需要双反斜杠?

1 个答案:

答案 0 :(得分:11)

\b具有特殊含义:它是退格符。 \s和许多其他\<something>序列没有特殊含义,因此\被解释为字面斜杠。

>>> '\b'
'\x08'
>>> print('123\b456')
12456
>>> '\s'
'\\s'
>>> print('\s')
\s
>>> print('\b')

>>> # nothing visible printed above

为了简化操作,通常在编写正则表达式时应使用原始字符串文字。这通常会阻止\被解释为Python字符串意义上的转义字符,因此它在正则表达式中正常工作。例如:

>>> r'\b'
'\\b'
>>> print(r'\b')
\b