正则表达式

Posted itfenqing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式相关的知识,希望对你有一定的参考价值。

一.re模块

 python提供re模块,包含所有正则表达式的功能

二.r前缀

使用r前缀,不用考虑转义问题

如:
s = r‘ABC-001‘

三.match方法

判断是否匹配,如果匹配成功,返回一个Match对象,否则返回None

如:

import re

if re.match(r‘w‘, ‘afefe‘):
    print(‘match‘)
else:
    print(‘no‘)

  

四.切分字符串

如果可以切分,返回切分后的列表;如果不能,以列表返回原字符串

import re

print(re.split(r‘s+‘, ‘a     ,b      d‘))

输出:
[‘a‘, ‘,b‘, ‘d‘]

  

五.分组

提取子串,()表示提取的分组

import re

r = re.match(r‘(d+)-(d+)‘, ‘010-059‘)
print(r.groups())
print(r.group(1)) #group(0)表示原字符串,1表示第一个匹配到的

  

输出:
(‘010‘, ‘059‘)
010

 

六.贪婪匹配

正则匹配默认是贪婪匹配,也就是匹配尽可能多的字符

1.贪婪匹配:

import re

r = re.match(r‘^(d+)(0*)$‘, ‘010000‘).groups()
print(r)

  

输出:
(‘010000‘, ‘‘)

 

2.非贪婪匹配:

import re

r = re.match(r‘^(d+?)(0*)$‘, ‘010000‘).groups()
print(r)

  

输出:
(‘01‘, ‘0000‘)

 

七.编译

当我们在Python中使用正则表达式时,re模块内部会干两件事情:

1.编译正则表达式,如果正则表达式的字符串本身不合法,会报错;
2.用编译后的正则表达式去匹配字符串。

如果一个正则表达式要重复使用几千次,出于效率的考虑,我们可以预编译该正则表达式,接下来重复使用时就不需要编译这个步骤了,直接匹配:

import re

re_num = re.compile(r‘^(d+?)(0*)$‘)
r = re_num.match(‘010000‘).groups()
print(r)

 







以上是关于正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

markdown 正则表达式模式片段

正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性

循环通过 python 正则表达式匹配

asp.net 使用正则表达式验证包含打开/关闭括号片段的属性字符串

攻破难啃的骨头-正则表达式(转)

正则表达式的贪婪和非贪婪模式