我是Python的新手。有人可以告诉我,这两个正则表达式语句(re.findall(r" d ","我年龄35"((和(re.findall(" d d ","我年龄35"(有什么区别(。
我有这样的理解,即第一个语句中的原始字符串将使" d "无效,因为这是原始字符串的主要作用 - 使逃生字符不活跃。换句话说,如果使用原始字符串,则" d "将不是用于查找/搜索/匹配数字的元字符。但是,我现在看到两个语句都返回相同的结果。
python parser 和正则表达式解析器手柄逃脱序列。这意味着两个引擎支持的任何逃生序列都必须使用双重斜线,否则您使用原始字符串字面的字体,因此Python Parser不会尝试解释逃生序列。
在这种情况下, d
对 python 没有任何意义,因此将后斜切留在适当的位置以使re
模块可以处理。因此,在这里具体,两个片段之间没有区别。
但是,如果您需要在正则表达式中的其他文本(如 section
(之前匹配 backslash ,而无需原始字符串,则必须使用 '\\section'
来定义模式!那是因为Python解释器将'\section'
视为产生单个后斜线的逃生序列,然后正则表达式PARSER看到逃生序列s
的开始。
请参阅python正则表达式中的后斜切和原始字符串文字的部分。