python正则表达式

1.re.search(r"正则表达式",待匹配字符串)

返回值:找到则返回目标的第一个字符串,可以用.span返回正则表达式在待匹配字符串中位置,找不到返回None

2.re.findall(r'正则表达式',str)

返回值:返回一个列表,包含所有符合表达式的字符串。

正则表达式[char1,char2,char3....]字符组,允许匹配一组可能出现的字符。


3.区间与区间取反

区间:- 正则表达式引擎在字符组中使用连字符(-)代表区间,所以我们匹配任意数字可以使用[0-9],所以如果我们想要匹配所有小写字母,可以写成[a-z],想要匹配所有大写字母可以写成[A-Z]

例如:a = - re.findall(r'[0-9]','xxx007abc')

区间取反:^不会出现的字符定义字符组,加在正则表达式前则从头取反,加在某个字符后则意味着从某个字符开始取反

例如:a = re.findall(r'[^0-9]','xxx007abc')

    a = re.findall(r'n[^e]','final')


4.正则表达式快捷方式

\w与任意单词匹配
\d与任意数字匹配
\s匹配空白字符,比如空格,换行等
\b匹配一个长度为0的子串

快捷方式小写改为大写则为取反


5.字符串的开始与结束

^表示字符串的开始,$表示字符串的结束


6.通配符.

在字符组中外使用.可代表任意字符

例:a=re.findall(r".ython",input_str)


7.可选字符

在字符后加?表示该字符可选。


8.重复和重复区间

重复:在正则表达式在一个字符组后加上{N} 就可以表示 {N} 之前的字符组出现N次。

例:a = re.findall(r'[\d]{4}-[\d]{7}','张三:0731-8825951,李四:0733-8794561')

重复区间:在不确定重复次数时可以使用重复区间{M,N},表示重复次数在M-N之间的都会被筛选


9.开闭区间与速写

知道此处会填写什么格式,但是我们不确定填写的内容。比如说每月支出,我们知道此处一定是数字,但是不确定这个月支出了多少钱,是3位数,还是4位数,说不定这个月就花了10个亿。这时候我们可以用开区间来表示此范围,如下所示:

例:a = re.search(r'[\d]{1,}','我这个月花了:5元')

用速写符号表示:

'+'重复匹配1个或多个
'*'重复匹配0个或多个

10.分组和命名分组

分组:可以在长的正则表达式中通过()来分组,通过group(index)来索引。

命名分组:

命名分组就是给具体有默认分组编号的组另外再起一个别名,方便以后的引用。 命令分组的语法格式如下:

(?P<name>正则表达式)

11.先行断言

正向先行断言

(?=pattern)表示正向先行断言,整个括号里的内容(包括括号本身)代表字符串中的一个位置,紧接该位置之后的字符序列能够匹配pattern

例:a = re.findall(r'n(?=al)','final')

反向先行断言

(?!pattern)表示反向先行断言,与正向先行断言相反,紧接该位置之后的字符序列不能够匹配pattern。反向先行断言不支持不定长

例:a = re.findall(r'n(?!e)','final')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值