Python正则

一、正则

正则表达式是一种通用的用来简洁表达一组字符串的表达式。利用正则表达式可以快速匹配和筛选字符串。通过re模块实现。

二、re模块

re模块使python语言具有全部的正则表达式功能。re模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为他们的第一个参数。
re.match():必须从字符串开头匹配,如果不是起始位置匹配成功的话返回None。

re.match(正则表达式,需要处理的字符串)

import re
a = re.match('12','12321')
print(a)
#返回<re.Match object; span=(0, 2), match='12'>
#span返回值为match在字符串中的位置
print(re.match('12','32112'))#返回None
#可以通过特定的函数来返回所需要的值:
print(a.span())#结果为(0,2),直接返回值
print(a.group())#结果为12,返回匹配到的内容

re.search()方法只在目标字符串中匹配一次满足条件的正则表达式,返回的是查找的字符在字符串中的位置。可以在任意位置进行匹配。

re.serach(正则表达式,需要处理的字符串)

import re
print(re.search('12','32112'))
#返回<re.Match object; span=(3, 5), match='12'>

匹配单个字符:

字符作用
.通配符,匹配任意字符(除了\n以外)
\d匹配数字:0,1,2,3,4,5,6,7,8,9
\D匹配非数字
\s匹配空白,即(\t\n\r\f等)换页\r回车
\S匹配非空白
\w匹配单个字符,即a-z,A-Z,0-9,汉字
\W匹配非单词字符,即匹配特殊字符。
import re
a = re.search('.','32112')
print(a)#<re.Match object; span=(0, 1), match='3'>
print(a.group())#3

匹配多个字符:

字符作用
*匹配前一个字符出现0次或无数次
+匹配前一个字符出现1次或无数次
匹配前一个字符出现1次或0次
{m}匹配一个字符出现m次
{m,}匹配一个字符最少出现m次
{m,n}匹配一个字符出现m到n次

re.findall()匹配目标字符串中所有满足条件的正则表达式,返回所有满足匹配条件的结果,放在列表里。

re.findall(正则表达式,需要处理的字符串)

import re
print(re.findall('\d','as2112asd312'))
#输出结果为['2', '1', '1', '2', '3', '1', '2']

匹配边界

字符作用
^匹配字符串开头
$匹配字符串结尾
\b匹配一个单词的边界
\B匹配非单词边界
import re
print(re.findall('^a','as21,asd3,12'))#['a']
print(re.findall(r'as\b','as,aass,12'))#['as']

匹配分组

[ ]中的列举的元素是或的关系,一次一个

import re
print(re.findall('[a-z]','asqwas1212'))
#['a', 's', 'q', 'w', 'a', 's']

( )中的元素是且的关系,取全部

import re
print(re.findall('(as)','asqwas1212'))#['as', 'as']

贪婪和非贪婪
贪婪:在满足匹配的情况下会尽可能匹配多的内容
非贪婪:在满足匹配情况的情况下尽可能匹配少的内容

import re
print(re.findall(r'as\d+','asqwas1212'))#贪婪['as1212']	
print(re.findall(r'as\d+?','asqwas1212'))#非贪婪['as1']
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值