python re.compile(r'模式标志')中的“ r”是什么意思?
我正在阅读http://docs.python.org/2/library/re.html。按此在蟒re.compile(以下简称“R”
- [R “模式标志”)是指原始字符串符号:
解决方案是将Python的原始字符串表示法用于正则表达式模式。反斜杠在以’r’开头的字符串文字中不会以任何特殊方式处理。所以r“ \
n”是一个包含’'和’n’的两个字符的字符串,而“ \
n”是一个包含换行符的一个单字符的字符串。通常,模式将使用此原始字符串表示法在Python代码中表示。
可以这样说吗?
re.compile( r pattern)表示“模式”是一个正则表达式,而re.compile(pattern)表示“模式”是一个精确匹配?
-
如前所述
@PauloBu
,r
字符串前缀与regex并不特别相关,但通常与Python中的字符串有关。普通字符串使用反斜杠字符作为特殊字符(如换行符)的转义字符:
>>> print('this is \n a test') this is a test
该
r
前缀告诉解释不这样做:>>> print(r'this is \n a test') this is \n a test >>>
这在正则表达式中很重要,因为您需要使用反斜杠将其
re
完整保留到模块中-
特别是\b
在单词的开头和结尾特别匹配空字符串。re
需要使用字符串\b
,但是普通的字符串解释'\b'
会转换为ASCII退格字符,因此您需要显式转义反斜杠('\\b'
),或者告诉python这是原始字符串(r'\b'
)。>>> import re >>> re.findall('\b', 'test') # the backslash gets consumed by the python string interpreter [] >>> re.findall('\\b', 'test') # backslash is explicitly escaped and is passed through to re module ['', ''] >>> re.findall(r'\b', 'test') # often this syntax is easier ['', '']