Python groups() 和 group() 之间的正则表达式输出不一致

Python regex inconsistent output between groups() and group()

我正在做一个小测试,使用 Python 正则表达式抓取反斜杠 (\),我发现有点奇怪。

import re
stringing = "\"
pattern = re.compile(r'(\)')
search = pattern.search(string)
print search.group()

输出如下图,符合预期

\

但是,当我使用 .groups() as,

print search.groups()

我明白了

('\',)

这显然是错误的。不确定发生了什么。

tl;dr \ 是反斜杠字符的 str 表示, '\'repr 的表示反斜杠字符。

在这种情况下,search.group returns 一个字符串。 \ 的实际字符串表示仅为 \。但是,当您打印一个元组时,它会在内部对其中的所有对象调用 reprrepr\ 上的结果是 '\'.

你可以这样检查

print repr(search.group()), str(search.group())
# '\' \