python3_re_正则表达式

概述

1、通用的字符串表达框架
2、简洁表达一组字符串的表达式
3、针对字符串表达“简洁”和“特征”思想的工具
4、判断某字符串的特征归属

##正则表达式常用的操作符

.       表示任何单个字符
[]      字符集,对单个字符给出取值范围,[abc]表示a,b,c,[a-z]表示a到z单个字符
[^ ]    非字符集,对单个字符给出排除范围,[^abc]表显非a,非b,非c的单个字符
*       前一个字符0次或无限次扩展,abc* 表示ab,abc,abcc,abccc等
+       表示前一个字符1次或无限次扩展,如abc+ 表示abc,abcc,abccc等
?       前一个字符0次或1次扩展,如abc? 表示ab,abc
|       左右表达式任意一个       如:abc|def 表示abc,或def
{m}     扩展前一个字符m次,ab{2}c 表示abbc
{m,n}   扩展一个字符m至n次(含n) 如:ab{1,2}表示abc,abbc
^       匹配字符串开头,^abc 表示abc且在一个字符串的开头
$       匹配字符串结尾,abc$表示abc且在一个字符串的结尾
()      分组标记,内部只能使用|操作符,(abc)表示 abc ,(abc|def)表示abc,def
\d      数字,等价于[0-9]
\w      单词字符,等价于[A-Za-z0-9]_|
*?      前一个字符0次或无限次扩展,最小匹配
+?      前一个字符1次或无限次扩展,最小匹配
??      前一个字符0次或1次扩展,最小匹配
{m,n}   扩展前一个字符m至n次(含 n),最小匹配

Re库主要功能函数

re.search()     在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象
re.match()      从一个字符串的开始位置起匹配正则表达式,返回match对象
re.findall()    搜索字符串,以列表类型返回全部能匹配的子串
re.split()      将一个字符串按照正则表达式匹配结果进行分割,返回列有类型
re.finditer()   搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象
re.sub()        在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串

正则表达式使用时的控制标记(flags)

re.I        忽略正则表达式的大小写,[A-Z]能匹配小写字符
re.M        正则表达式中的^操作符能够将给定字符串的每行当作匹配开始
re.S        正则表达中的.操作符能够匹配所有字符,默认匹配除换行外的所有字符

正则表达式的编译

regex=re.complie(pattern,flags=0) 返回正则表达式编译对象
将正则表达式的字符串形式编译成正则表达式对象
1.pattern:正则表达式的字符串工顺手生字符串表示
2.flags:正则表达式使用时的控制标记
正则匹配的两种等架模式:

>>>rst=re.search(r'[1-9]\d{5}','abc 100081')

经过compiler编译后的正则表达式,可以调用对象search(),match(),findall(),split(),finditer(),sub()

pat=re.compiler(r'[1-9]\d{5}')
rst=pat.search('abc 100081')

正则函数

re.search(pattern.string,flags=0) 返回match
pattern:正则表达式的字符串或原生字符串表示
string:待匹配字符串
flags:正则表达式使用时的控制标记

match=re.search(r'[1-9]\d{5}','abc 100081')
if match:
    print(match.group(0))

re.match(pattern,string,flags=0) 返回match
从首字符开始匹配

match=re.match(r'[1-9]\d{5}','100081 abc')
if match:
	print(match.group(0))

re.findall(pattern,string,flags=0 返回list

ls=re.findall(r'[1-9]\d{5}','abc 100081 def100082')
print(ls)

re.split(pattern,string,maxsplit=0,flags=0) 返回list
maxsplit :最大分割数,剩余部分作为最后一个输出块(返回n+1块)

ls=re.split(r'[1-9]\d{5}','abc 100081 def100082',maxsplit=1)
print(ls)

re.finditer(pattern.string,flags=0) 返回match

for m in re.finditer(r'[1-9]\d{5}','abc100081 def100082'):
	if m:
		print(m.group(0))

re.sub(pattern,repl,string,count=0,flags=0) 返回替换后的str
repl:替换匹配字符串的字符串
count:匹配的最大替换次数

sub=re.sub(r'[1-9]\d{5}','zzzzzz','abc100081 def100082')
print(sub)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值