对 python 中的反斜杠感到困惑
Confused about the backslash in python
我知道要匹配文字反斜杠,必须在正则表达式中对其进行转义。使用原始字符串表示法,这意味着 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
returns什么都没有,说明字符串中没有反斜杠。但是,我确实在其中看到了反斜杠。 \'
中的反斜杠实际上不是反斜杠吗?
感谢您的帮助!
在 python 中,这些是转义字符,因为它们在代码中除了显示在屏幕上之外还有其他含义(例如,一个字符串可以通过将其包装在一个单独的引用)。您可以看到所有 python 字符串文字 here,但在该字符串中找不到反斜杠的原因是它们被视为转义单引号。虽然不是必需的,但它仍然是有效的语法,因为有时需要它
查看 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
的解释:What is the difference between Python's re.search and re.match?
我知道要匹配文字反斜杠,必须在正则表达式中对其进行转义。使用原始字符串表示法,这意味着 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
returns什么都没有,说明字符串中没有反斜杠。但是,我确实在其中看到了反斜杠。 \'
中的反斜杠实际上不是反斜杠吗?
感谢您的帮助!
在 python 中,这些是转义字符,因为它们在代码中除了显示在屏幕上之外还有其他含义(例如,一个字符串可以通过将其包装在一个单独的引用)。您可以看到所有 python 字符串文字 here,但在该字符串中找不到反斜杠的原因是它们被视为转义单引号。虽然不是必需的,但它仍然是有效的语法,因为有时需要它
查看 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
的解释:What is the difference between Python's re.search and re.match?