对 Python 中的反斜杠感到困惑

  • 本文关键字:Python python backslash
  • 更新时间 :
  • 英文 :


我知道要匹配文字反斜杠,必须在正则表达式中对其进行转义。使用原始字符串表示法,这意味着r"\".如果没有原始字符串表示法,则必须使用"\\".

当我看到代码string = re.sub(r"[^A-Za-z0-9(),!?'`]", " ", string)时,我想知道反斜杠在'`中的含义,因为它也可以很好地'`,就像string = re.sub(r"[^A-Za-z0-9(),!?'`]", " ", string)一样。这里有必要添加反斜杠吗?

我在Python中尝试了一些示例:

  1. str1 = "'s"
    print(str1)
    str2 = "'s"
    print(str2)
    

    结果与's相同。我认为这可能是为什么在以前的代码中,他们在string = re.sub(r"[^A-Za-z0-9(),!?'`]", " ", string)中使用'`的原因。我想知道"'s""'s"之间有什么区别吗?

  2. string = 'adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'
    re.match(r"\", string)
    

    re.match不返回任何内容,这表明字符串中没有反斜杠。但是,我确实在其中看到了反斜杠。'中的反斜杠实际上不是反斜杠吗?

在python中,这些是转义字符,因为它们除了出现在屏幕上时之外,还可以对代码具有其他含义(例如,可以通过将其包装在单个引号中来制作字符串(。您可以在此处看到所有 python 字符串文字,但在该字符串中找不到反斜杠的原因是它们被视为转义的单引号。虽然这不是必需的,但它仍然是有效的语法,因为有时需要它

查看https://docs.python.org/2.0/ref/strings.html 以获得更好的解释。

第二个示例的问题在于string不是原始字符串,因此'被解释为'。如果将其更改为:

>>> not_raw = 'adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'
>>> res1 = re.search(r'\',not_raw)
>>> type(res1)
<type 'NoneType'>
>>> raw = r'adequately describe co-writer/director peter jackson's expanded vision of j . r . r . tolkien's middle-earth .'
>>> res2 = re.search(r'\',raw)
>>> type(res2)
<type '_sre.SRE_Match'>

对于re.matchre.search的解释:Python的re.search和re.match有什么区别?

相关内容

  • 没有找到相关文章

最新更新