我知道要匹配文字反斜杠,必须在正则表达式中对其进行转义。使用原始字符串表示法,这意味着r"\"
.如果没有原始字符串表示法,则必须使用"\\"
.
当我看到代码string = re.sub(r"[^A-Za-z0-9(),!?'`]", " ", string)
时,我想知道反斜杠在'
和`
中的含义,因为它也可以很好地'
和`
,就像string = re.sub(r"[^A-Za-z0-9(),!?'`]", " ", string)
一样。这里有必要添加反斜杠吗?
我在Python中尝试了一些示例:
str1 = "'s" print(str1) str2 = "'s" print(str2)
结果与
's
相同。我认为这可能是为什么在以前的代码中,他们在string = re.sub(r"[^A-Za-z0-9(),!?'`]", " ", string)
中使用'`
的原因。我想知道"'s"
和"'s"
之间有什么区别吗?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.match
与re.search
的解释:Python的re.search和re.match有什么区别?