【问题标题】:Python: Does regular expression match escape sequences? [duplicate]Python:正则表达式是否匹配转义序列? [复制]
【发布时间】:2017-07-14 21:39:02
【问题描述】:

我目前正在学习 Python 中的正则表达式,我对正则表达式真正匹配的内容感到困惑。比如'\\'其实就是'\',那么如果我需要匹配字符串'abc\\cde'中的'\'呢? re.findall(r'\', '010\\aa') 根本不起作用。感谢您的帮助。

【问题讨论】:

  • re.findall(r'\\', '010\\aa')
  • 原始字符串中不能有尾部反斜杠:stackoverflow.com/questions/647769/…
  • Pythex pythex.org> 是尝试正则表达式并查看其工作原理的好方法。
  • @jonrsharpe 现在我明白我的代码出了什么问题,谢谢!

标签: python regex python-2.7


【解决方案1】:

正如其他人所提到的,\ 是您仍需要在原始字符串中转义的一个字符:

re.findall(r'\\', '010\\aa')

注意r'\\' 是一个长度为2 的字符串,包含两个 反斜杠,而不是一个,这与'\\' 不同。这在https://docs.python.org/2.0/ref/strings.html 的底部有描述。

【讨论】:

  • len(r'\x07') 是 4 个字符,因此不等同于 '\a'。我认为正则表达式库正在做自己的转换,以便可以匹配'\a'
  • 而且 Python 在解析原始文字时拒绝删除转义符,这很愚蠢。
【解决方案2】:

您总是需要转义字符串中的分隔符。
由于语言需要解析转义分隔符,
这需要解析转义本身。

这是语言源字符串解析的事实,甚至是原始字符串。

例子:

' => r'\''
\' => r'\''
\\' => r'\\\''

【讨论】:

    猜你喜欢
    • 2011-12-13
    • 2013-12-30
    • 1970-01-01
    • 2018-02-01
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多