Python正则表达式-常用函数的基本使用
常用函数有
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() 匹配整个字符串,判断数据时候包含我的正则数据
'''
Python大型免费公开课,适合初学者入门
加QQ群:579817333 获取学习资料及必备软件。
'''
>>> 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'>
>>>
作比较
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() 检索和替换
import re
#re.sub(pattern, repl, string, count=0, flags=0)
st = '这#是#一#个#很*寂*寞*的#天#,#下#着#有#些#伤@心@的@雨@'
#将这个字符串里的特殊符号替换成空,也就是删掉的意思。
#定义正则
pat = r'[#\*@]'
music = re.sub(pat,'',st)
print(music)
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() 这两个函数使用。
'''
Python大型免费公开课,适合初学者入门
加QQ群:579817333 获取学习资料及必备软件。
'''
>>> 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 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。
'''
Python大型免费公开课,适合初学者入门
加QQ群:579817333 获取学习资料及必备软件。
'''
>>> 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该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。