赞
踩
正则表达式是对字符串操作的一种逻辑公式,我们一般使用正则表达式对字符串进行匹配和过滤。例如,可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
正则表达式是由普通字符和元字符组成。
正则表达式中常见的特殊字符有以下几个:
.+?*$[]()^{}\
如果要在正则表达式中表示这几个字符本身,就应该在字符前面加上\。
- . 匹配除换行符以外的任意字符
- \w 匹配数字、字母、下划线,汉字
- \s 匹配任意的一个空白符,如空格,\t,\r,\n等
- \d 匹配任意的一个数字,等价于[0-9]
- \n 匹配一个换行符
- \t 匹配一个制表符
- ^ 匹配字符串的开始
- $ 匹配字符串的结尾
- \W 匹配非(字母、数字、下划线、汉字)
- \D 匹配一个非数字,等价于[^\d],[^0-9]
- \S 匹配非空白符
- a|b 匹配a或b
- () 匹配括号内的表达式,也表示一个组
- [...] 匹配字符组中的其中一个字符
- [^...] 匹配一个除了字符组中出现的字符
想要一次性匹配多个字符,则需要使用到量词
- * 表示左边的字符可重复零次或更多次
- + 表示左边的字符可重复一次或更多次
- ? 表示左边的字符可重复零次或一次
- {n} n为整数,表示左边的字符必须且只能重复n次
- {n,} 表示左边的字符最少重复n次或更多次
- {n,m} 表示左边的字符至少重复n次,最多重复m次
在量词中的?
,*
,+
,{}
都属于贪婪匹配,就是尽可能多的匹配到结果。
在使用.*
后面如果加了?
,这是尽可能的少匹配。表示惰性匹配。.?
,.+
,.{}
类似
re.search(pattern, string, flags = 0)
- res = re.search("\d+", "我今年18岁了,体重为60kg")
- # 输出子串及起止位置
- print(res.group(), res.span()) # 18 (3, 5)
re.findall(pattern, string, flags = 0
- list = re.findall("\d+", "我今年18岁了,体重为60kg")
- print(list) #['18', '60']
re.match(pattern, string, flags = 0)
- result = re.match("\d+","18岁了,我喜欢5个明星")
- print(result.group()) # 18,result.group()是匹配到的字符串
re.finditer(pattern, string, flags = 0)
- it = re.finditer("\d+", "我今年18岁了,体重为60kg")
- for item in it:
- print(item.group(), item.span()) # 18 (3, 5) 60 (11, 13)
split
分割
- ret = re.split('[ab]', 'qwerafjbcd')
- #先按'a'分割,得到'qwer'和'fjbcd',再对'qwer'和'fjbcd'分别按'b'分割
- print(ret) #['qwer', 'fj', 'cd']
re.sub(pattern, repl, string, count=0, flags=0)
用于替换匹配的字符串,比str.replace
功能更加强大
- ret = re.sub('[a-z]+','sb','武配齐是abc123',)
- print(ret) #武配齐是sb123
- re.sub('\d+','|', 'alex22wupeiqi33oldboy55',count=2)
- print(ret) #alex|wupeiqi|oldboy55
compiler
- obj = re.compile(r'\d{3}') #将正则表达式编译成为一个 正则表达式对象,规则要匹配的是3个数字
-
- obj = re.compile(r'\d+') # 先加载这个正则,后面可以直接用这个正则去匹配内容
- lst = obj.findall("我今天吃了3个馒头,喝了2碗粥")
- print(lst) # ['3', '2']
- obj = re.compile(r"今天吃了(?P<mian>\d+)碗面,又吃了(?P<xian>\d+)盘小咸菜")
- result = obj.finditer("明天我要吃4碗面,喝上8碗汤。今天吃了5碗面,又吃了6盘小咸菜,昨天吃了1碗面条")
- for item in result:
- print(item.group("mian")) # 5
- print(item.group("xian")) # 6
- print(item.groupdict()) # {'mian': '5', 'xian': '6'}
————————————————
版权声明:本文为CSDN博主「whhom」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/whhcs/article/details/118861606
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。