我理解'r'前缀表示原始字符串,因此在下面的示例中为什么使用'r'前缀,因为字符串中有特殊的正则表达式字符,不应按字面意思理解?
正在搜索的'字符串'是一个nltk Text对象,我想它与此有关?但是我不明白它如何影响findall的使用。
moby.findall(r"<a> (<.*>) <man>")
答案 0 :(得分:3)
在这种特殊情况下,r
没有区别,因为此字符串不包含任何可能被误解的序列。但是,在编写正则表达式时使用r
是一个好习惯,以避免误解\n
或\t
等序列;与r
一样,它们按照字面意思对待,作为两个字符 - 反斜杠后跟一个字母;如果没有r
,它们将分别评估为换行符和制表符。
答案 1 :(得分:1)
字符串前面的r
称为sigil。
例如,'\ n'将被视为换行符,而r'\ n'将被视为字符\后跟n。
但对于你的正则表达式:
moby.findall(r"<a> (<.*>) <man>")
它没有什么区别,但将regex视为原始字符串以避免转义反斜杠始终是一个好主意。