一.re.escape(pattern) 可以对字符串中所有可能被解释为正则运算符的字符进行转义的应用函数。如果字符串很长且包含很多特殊技字符,而你又不想输入一大堆反斜杠,或者字符串来自于用户(比如通过raw_input函数获取输入的内容),且要用作正则表达式的一部分的时候,可以使用这个函数.
需求:提取的字符串里面存在特殊的符号,这些符号在正则表达式里面有特殊的意义,
有使用的规范,不能随意使用。
逐一x.replace(’+’, ‘+’).replace(’.’, ‘.’).replace(’*’, ‘*’)…?
那么多字符串你怎么知道有哪些特殊字符串?what to do?
别急客官,热乎乎的干货来了。。。。。。。。。。。。。。
Python 的正则表达式模块已经帮你想好了解决办法,
使用re.escape就能自动处理所有的特殊符号了!
实战举例:
import re
words = [’+\d’,’***…{}’,‘前进的码力牛掰plus’,‘点赞你最帅’,‘持续发文,{做最实用的博客}’]
pattern_str = ‘|’.join(words)
safe_pattern_str = re.escape(pattern_str)
print(safe_pattern_str)
打印结果:
pattern = re.compile(safe_pattern_str)
print(pattern)
打印结果:
二.re.compile1. 使用re.compilere模块中包含一个重要函数是compile(pattern [, flags]) ,该函数根据包含的正则表达式的字符串创建模式对象。可以实现更有效率的匹配。在直接使用字符串表示的正则表达式进行search,match和findall操作时,python会将字符串转换为正则表达式对象。而使用compile完成一次转换之后,在每次使用模式的时候就不用重复转换。当然,使用re.compile()函数进行转换后,re.search(pattern, string)的调用方式就转换为 pattern.search(string)的调用方式。其中,后一种调用方式中,pattern是用compile创建的模式对象。如下:
>>> import re
>>> some_text = 'a,b,,,,c d'
>>> reObj = re.compile('[, ]+')
>>> reObj.split(some_text)
['a', 'b', 'c', 'd']