第11.13节 Python正则表达式的转义符”\”功能介绍

为了支持特殊元字符在特定场景下能表示自身而不会被当成元字符进行匹配出来,可以通过字符集或转义符表示方法来表示,字符集表示方法前面在《第11.4节 Python正则表达式搜索字符集匹配功能及元字符”[]”介绍》进行了介绍,本节介绍转义符表示方法。

在re模块中,为了让元字符能表示自身,可以在元字符前面增加转义符反斜杠“\”,这个转义符的使用可以看到与Python字符串的转义符是完全相同的。re模块转义符和Python字符串转义符相同会导致在re模块进行转义处理时变得比较复杂,我们后面再单独章节讨论这个问题。

举例:我们要查找字符串中包含3个以上星号的字符串:

>>> re.search('*{3,100}','***************') #在匹配模式中星号未进行转义
Traceback (most recent call last):
  File "<pyshell#30>", line 1, in <module>
    re.search('*{3,100}','***************')
  File "C:\Program Files\Python37\lib\re.py", line 183, in search
    return _compile(pattern, flags).search(string)
  File "C:\Program Files\Python37\lib\re.py", line 286, in _compile
    p = sre_compile.compile(pattern, flags)
  File "C:\Program Files\Python37\lib\sre_compile.py", line 764, in compile
    p = sre_parse.parse(p, flags)
  File "C:\Program Files\Python37\lib\sre_parse.py", line 930, in parse
    p = _parse_sub(source, pattern, flags & SRE_FLAG_VERBOSE, 0)
  File "C:\Program Files\Python37\lib\sre_parse.py", line 426, in _parse_sub
    not nested and not items))
  File "C:\Program Files\Python37\lib\sre_parse.py", line 651, in _parse
    source.tell() - here + len(this))
re.error: nothing to repeat at position 0
>>> re.search('\*{3,100}','***************') #对星号进行转义
<re.Match object; span=(0, 15), match='***************'>
>>>

从以上案例可以看出,在匹配模式中的星号未进行转义时,由于星号在re模块中被作为重复0-n次的特殊修饰字符,在处理时由于前面没有修饰对象导致re模块分析报错。而增加转义符后,星号被作为自身处理,因此能正确匹配。

注意:
1、 所有元字符在匹配模式串中当要表示自身时需要加转义符反斜杠“\”;
2、 反斜杠自身需要表示自己时一样需要使用转义符。

老猿Python,跟老猿学Python!
博客地址:https://blog.csdn.net/LaoYuanPython

请大家多多支持,点赞、评论和加关注!谢谢!

posted on 2019-08-18 21:34  老猿Python  阅读(3371)  评论(0编辑  收藏  举报