25 re

25.1 项目简介

这个模块提供了与Perl中类似的正则表达式匹配操作。 要搜索的模式和字符串可以是Unicode字符串(str)和8位字符串(字节)。但是,Unicode字符串和8位字符串不能混合使用:也就是说,不能将Unicode字符串与字节模式匹配,反之亦然;同样,当请求替换字符串时,替换字符串的类型必须与模式和搜索字符串的类型相同。 正则表达式使用反斜杠字符('\')表示特殊形式,或允许使用特殊字符而不调用其特殊含义。这与Python在字符串文本中为相同的目的使用相同的字符相冲突;例如,为了匹配文本反斜杠,可能必须将“\\”写成模式字符串,因为正则表达式必须是\,并且每个反斜杠都必须在常规Python字符串文本中表示为\。另外,请注意,Python在字符串文本中使用反斜杠时,任何无效的转义序列现在都会生成一个DeprecationWarning,将来它将变成SyntaxError。即使是正则表达式的有效转义序列,也会发生这种行为。 解决方案是将Python的原始字符串表示法用于正则表达式模式;在前缀为“r”的字符串文本中,不会以任何特殊方式处理反斜杠。所以r“\n”是一个包含“\”和“n”的双字符字符串,而“\n”是一个包含换行符的单字符字符串。通常模式将使用这种原始字符串表示法用Python代码表示。 需要注意的是,大多数正则表达式操作都可以作为模块级函数和已编译正则表达式的方法使用。这些函数是快捷方式,不需要先编译regex对象,但会遗漏一些微调参数。

25.2 项目地址

https://docs.python.org/3/library/re.html

25.3 文档地址

https://github.com/python/cpython/blob/3.8/Lib/re.py

25.4 最佳实践

import re
print(re.match('www', 'www.baidu.com').span())  # 在起始位置匹配
print(re.match('com', 'www.baidu.com'))         # 不在起始位置匹配


© pengpeng 本站总访问量修改时间: 2020-07-26

results matching ""

    No results matching ""