python re.compile(r'模式标志')中的“ r”是什么意思?

发布于 2021-01-29 19:12:05

我正在阅读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)表示“模式”是一个精确匹配?

关注者
0
被浏览
147
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    如前所述@PauloBur字符串前缀与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
    ['', '']
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看