在标记化文本中使用findall方法,并在前缀'r'

时间:2017-06-14 08:16:59

标签: python regex nltk

我理解'r'前缀表示原始字符串,因此在下面的示例中为什么使用'r'前缀,因为字符串中有特殊的正则表达式字符,不应按字面意思理解?

正在搜索的'字符串'是一个nltk Text对象,我想它与此有关?但是我不明白它如何影响findall的使用。

moby.findall(r"<a> (<.*>) <man>")

2 个答案:

答案 0 :(得分:3)

在这种特殊情况下,r没有区别,因为此字符串不包含任何可能被误解的序列。但是,在编写正则表达式时使用r是一个好习惯,以避免误解\n\t等序列;与r一样,它们按照字面意思对待,作为两个字符 - 反斜杠后跟一个字母;如果没有r,它们将分别评估为换行符和制表符。

答案 1 :(得分:1)

字符串前面的r称为sigil。

例如,'\ n'将被视为换行符,而r'\ n'将被视为字符\后跟n。

但对于你的正则表达式:

moby.findall(r"<a> (<.*>) <man>")

它没有什么区别,但将regex视为原始字符串以避免转义反斜杠始终是一个好主意。