正则表达式-常用函数的基本使用

常用函数有

re.match()、re.search() 、re.sub()、compile()、findall()、finditer()、split()

re.match()  匹配字符串开头,常用来判断数据是否满足我的正则要求。

成功返回一个match对象,不成功返回空。

>>> import re
>>> rc = re.compile(r"www.+")
>>> rc.match('www.com wxw.cn')
<re.Match object; span=(0, 14), match='www.com wxw.cn'>
>>> rc.match('wxw.cn www.com')
>>>
>>>

re.search() 匹配整个字符串,判断数据时候包含我的正则数据

>>> rc.search('wxw.cn www.com')
<re.Match object; span=(7, 14), match='www.com'>
>>> rc.search('wxw.cn www.com wxw.org www.cn')
<re.Match object; span=(7, 29), match='www.com wxw.org www.cn'>
>>>

作比较

#!/usr/bin/python
# -*- coding: utf-8 -*-

import re

st = 'Monday Tuesday Wednesday Thursday Friday Saturday Sunday'
rc = r'sunday'

#match 进行匹配
rcm = re.match(rc,st,re.I)
#re.I忽略大小写
if rcm:
    print(rcm.group())
else:
    print("match don't is Sunday")

#search 进行匹配查找
rcs = re.search(r'sunday',st,re.I)
if rcs:
    print(rcs.group())
else:
    print("search don't is Sunday")

re.sub() 检索和替换

#!/usr/bin/python
# -*- coding: utf-8 -*-

import re

#re.sub(pattern, repl, string, count=0, flags=0)

st = '这#是#一#个#很*寂*寞*的#天#,#下#着#有#些#伤@心@的@雨@'

#将这个字符串里的特殊符号替换成空,也就是删掉的意思。
#定义正则
pat = r'[#\*@]'

music = re.sub(pat,'',st)
print(music)


#!/usr/bin/python
# -*- coding: utf-8 -*-

import re

#re.sub(pattern, repl, string, count=0, flags=0)

#repl 也可以是一个函数

str ='主板 cpu computer 电池 mouse 键盘'
pat = r'[a-z]'
#将str中的小写英文字母全都转换为大写

def chupper(matched):
    value = matched.group()
    return value.upper()

res = re.sub(pat,chupper,str)
print(res)

compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。

>>> import re
>>> pac = re.compile('[a-z]',re.I)
>>> st = 'A1b2c3d4e5f7g8h9i0g1k2l3m4n5'
>>> m = pac.match(st)
>>> m
<re.Match object; span=(0, 1), match='A'>
>>> m.group()
'A'
>>> m.start()
0
>>> m.end()
1
>>> m.span()
(0, 1)
>>>
findall

在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。

注意: match 和 search 是匹配一次 findall 匹配所有。

findall(string[, pos[, endpos]])


re.finditer
和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。
>>> rec = re.compile(r'\D')
>>> iters = rec.finditer('abcd1234efg567hig')
>>> for value in iters:
    print(value.group(),end="")

abcdefghig
>>>

split 方法按照能够匹配的子串将字符串分割后返回列表,它的使用形式如下:

re.split(pattern, string[, maxsplit=0, flags=0])
>>> rec = re.compile(r'[.]')
>>> st = '192.168.1.1'
>>> recs = rec.split(st)
>>>
>>> recs
['192', '168', '1', '1']
>>>

flags:

修饰符	描述
re.I	使匹配对大小写不敏感
re.L	做本地化识别(locale-aware)匹配
re.M	多行匹配,影响 ^ 和 $
re.S	使 . 匹配包括换行在内的所有字符
re.U	根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
re.X	该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。

正则理解起来不难,就是感觉容易遗忘,这一段学快点,不要浪费时间,下去多做练习。


读书和健身总有一个在路上

posted @ 2020-04-28 13:44  Renqy  阅读(607)  评论(0编辑  收藏  举报