在python中,re模块是用来处理正则表达式,它能够处理Unicode和普通字符串。
1.常用函数
1.1findall
findall函数在查找匹配时,将匹配的字符串以列表的形式返回,如果没有匹配项,将会返回空列表,而不会抛出异常。
flags=re.IGNORECASE匹配时忽略大小写。
In [1]: import re In [2]: data = "Python 3.7.7 (default, Apr 26 2020, 20:44:53)" In [3]: re.findall('python [0-9]\.[0-9]\.[0-9]',data,flags=re.IGNORECASE) Out[3]: ['Python 3.7.7']
1.2match
match函数类似于字符串中的startwith函数,但是match函数可以处理更加复杂的情况。match函数如果匹配,则会返回一个re.Match类型的对象,如果匹配失败,则会返回一个None。
In [4]: re.match('Python',data) Out[4]: re.Match object; span=(0, 6), match='Python'
匹配数字开头的字符串:
In [6]: data1 = "23 21:28:25 2020 from 192.168.244.1" In [7]: re.match('\d+',data1) Out[7]: re.Match object; span=(0, 2), match='23'
1.3sub
sub函数类似于字符串函数的replace函数,当多个字符串需要替换时,sub函数只需要一次替换,而replace需要多次替换。
In [10]: data2 = "Python 3.7.7 Python 3.7.8" In [11]: re.sub('[0-9]\.[0-9]\.[0-9]','x.x.x',data2) Out[11]: 'Python x.x.x Python x.x.x'
1.4split
re模块的split函数和字符串的spilt函数一样,都是将一个字符串分割成子串的列表。内置的split函数通常只能指定一个分隔符,但是re模块的split函数能同时指定多个分割符。
In [12]: re.split(r"[,:\s]",data) Out[12]: ['Python', '3.7.7', '(default', '', 'Apr', '26', '2020', '', '20', '44', '53)']
2.非贪婪匹配
贪婪匹配总是匹配最长的字符串,非贪婪匹配总是匹配最短的字符串。
匹配以/usr开头/结尾的字符串:
In [15]: data3 = "/usr/local/python-3.7.7/lib/python3.7/site-packages/IPython/core/history.py:226" In [17]: re.findall('/usr.*\/',data3) Out[17]: ['/usr/local/python-3.7.7/lib/python3.7/site-packages/IPython/core/'] In [18]: re.findall('/usr.*?\/',data3) Out[18]: ['/usr/']
「 文章如果对你有帮助,请点个赞哦^^ 」 
1+
若无特殊注明,文章均为本站原创或整理发布。
转载请注明本文地址:https://om.fangxiaoxiong.com/3161.html