python中正则匹配一般使用re模块,今天来讲讲常用的。
很多方法中都有一个参数flags
,下面来看看这个参数有哪些可选值:
标识 | 含义 |
---|---|
I | 使匹配对大小写不敏感 |
L | 做本地化识别(locale-aware)匹配,法语等 |
U | 根据Unicode字符集解析字符,这个标志影响\w,\W,\b,\B |
M | 多行匹配,影响^和$ |
S | 使 . 匹配包括换行在内的所有字符 |
X | 该标志通过给予更灵活的格式以便将正则表达式写得更易于理解 |
1. search
search(pattern, string, flags=0)
函数会在字符串内查找模式匹配,只要找到第一个匹配然后返回,如果字符串没有匹配,则返回None。
origin_str = 'hifaijewh2374y328hdu8af_=-=[]'
t1 = re.search('\d', origin_str)
t2 = re.search('\d[5]', origin_str)
print t1.group(), t2
>>> 2 None
2. compile
compile(pattern, flags=0)
编译正则表达式模式,返回一个对象的模式。(可以把那些常用的正则表达式编译成正则表达式对象,这样可以提高一点效率。)
origin_str = 'hhhaijewh2374y328hdu8af_=-=[]'
obj = re.compile('\d+')
res = re.search(obj, origin_str)
print res.group()
>>> 2374
3. match
match(pattern, string, flags=0)
从第一个字符开始匹配,匹配成功返回,开头未匹配到则返回None。是不完全匹配,即便后面有符合条件的字符串也不会继续匹配。
origin_str = 'hifaijewh2374y328hdu8af_=-=[]'
t1 = re.match('h', origin_str)
t2 = re.match('H', origin_str)
t3 = re.match('H', origin_str, re.I) # 忽略大小写
print t1.group(), t2, t3.group()
>>> h None h
4. findall
findall(pattern, string, flags=0)
遍历匹配,可以获取字符串中所有匹配的字符串,返回一个列表。
origin_str = 'hifaijewh2374y328hdu8af_=-=[]'
t1 = re.findall('\d+', origin_str)
print t1
>>> ['2374', '328', '8']
5. finditer
finditer(pattern, string, flags=0)
按顺序找到 re 匹配的所有子串(和findall匹配的字串一样),并把它们作为一个迭代器返回。
origin_str = 'hhhhaijewh2374y328hdu8af_=-=[]'
t1 = re.finditer('hh', origin_str)
print t1
for i in t1:
print i.group(),
>>> hh hh
6. split
split(pattern, string, maxsplit=0, flags=0)
按照能够匹配的子串将string分割后返回列表。
origin_str = 'hhhaijewh2374y328hdu8af_=-=[]'
t1 = re.split('\d+', origin_str)
print t1
>>> ['hhhaijewh', 'y', 'hdu', 'af_=-=[]']
7. sub
sub(pattern, repl, string, count=0, flags=0)
使用re替换string中每一个匹配的子串后返回替换后的字符串。
origin_str = 'hhhaijewh2374y328hdu8af_=-=[]'
t1 = re.sub('\d', '*', origin_str)
print t1
>>> hhhaijewh****y***hdu*af_=-=[]
8. subn
subn(pattern, repl, string, count=0, flags=0)
返回一个元祖,第一个是替换后的字符串,第二个是替换次数。
origin_str = 'hhhaijewh2374y328hdu8af_=-=[]'
t1 = re.subn('\d', '*', origin_str)
print t1
>>> ('hhhaijewh****y***hdu*af_=-=[]', 8)
参考文章:
python中的正则表达式(re模块)