【问题标题】:Python regex inconsistent output between groups() and group()组()和组()之间的Python正则表达式输出不一致
【发布时间】:2015-05-06 07:51:55
【问题描述】:

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

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

输出如下图,和预期的一样

\

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

print search.groups()

我明白了

('\\',)

这显然是错误的。不知道发生了什么。

【问题讨论】:

  • 单独尝试search.group(),无需打印。它会给你'\\' 而不是反斜杠。
  • 是的。为什么会这样?不应该只给一个`\`
  • 我认为这是因为您正在运行的 ide。
  • 试试这个for i in re.search(r'(\\)', s).groups(): print i
  • @AvinashRaj 我在一个在 linux 终端中打开的 Python 解释器中运行。

标签: python regex regex-group


【解决方案1】:

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

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

你可以这样检查

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

【讨论】:

    猜你喜欢
    • 2021-11-18
    • 1970-01-01
    • 2012-08-19
    • 2014-03-02
    • 1970-01-01
    • 2021-10-22
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多