Python 以下代码是什么意思?

Python 以下代码是什么意思?,python,regex,replace,Python,Regex,Replace,我不理解Python中的这段代码。我知道函数的作用,但我不知道替换字符串中的\\\是如何作用的 import re caps="([A-Z])" pre="(Mr|mr|Mr|St|st|ST|Mrs|MRS|mrs|Ms|MS|ms|Dr|DR|dr|miss|Miss|MISS)[\.\.\.]" def tokenize_sentence(text): text=re.sub(" ?"+pre,"\\1<dot>",text) text = re.sub(cap

我不理解Python中的这段代码。我知道函数的作用,但我不知道替换字符串中的
\\\
是如何作用的

import re
caps="([A-Z])"
pre="(Mr|mr|Mr|St|st|ST|Mrs|MRS|mrs|Ms|MS|ms|Dr|DR|dr|miss|Miss|MISS)[\.\.\.]"
def tokenize_sentence(text):
    text=re.sub(" ?"+pre,"\\1<dot>",text)
    text = re.sub(caps + "[.]" + caps + "[.]" + caps + "[.]", "\\1<prd>\\2<prd>\\3<prd>", text)
    print(text)
tokenize_sentence("Mr. Ansh sahajpal A.B.C.")
我原以为它会替换第一个
和第二个
,但它给了我一个错误。

请解释。

\1
\2
等引用正则表达式中匹配的子表达式(括在括号中)
\1
是匹配的第一个表达式,
\2
是第二个表达式,以此类推。它们在替换字符串中用于标记要修改匹配子表达式的位置

匹配子表达式的常见约定是使用括号。以下是一个例子:

str = 'an example word:cat!!'
print (re.sub (r'word:(\w+)', r'\0dog', str))
表示匹配冒号后面的任意数量的字母数字字符,并生成:

an example word:dog!!

在本例中,(\w+)是一组字母数字字符的分组表达式,包括“u”。

您的问题已脱离主题,因为您正在寻求调试帮助。如果逐行运行调试器,则可以理解代码的功能。顺便说一句,
\1
\someNumber
是正则表达式捕获组索引,因此如果您的正则表达式捕获了
hello
,那么如果您使用
\1
您是在引用hello,那么
\1\1
将是
hellohello
请注意,在所有语言中,Python对缩进非常敏感。您编写的不会编译,因为您没有缩进函数体。我已经猜到了函数的范围。下次请非常小心。此外,当您报告“it给了我一个错误”时,请逐字引用您收到的错误消息。我想它说的是没有第二个捕获的字符串供
\\2
参考-但我们不应该猜测;你应该从一开始就告诉我们。
str = 'an example word:cat!!'
print (re.sub (r'word:(\w+)', r'\0dog', str))
an example word:dog!!