Python 正则表达式

正则表达式

比如说我们要在一个文件中搜索以什么开头、以什么结尾或者包含什么的句子,这时候正则表达式是帮助我们来实现这些功能的东西。
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。

普通字符

普通字符就是指字母、数字、汉字、下划线、以及没有特殊定义的符号。在正则表达式中,普通字符在匹配的时候只匹配与自身相同的一个字符。

转义字符

一些具有特殊功能的字符,采用在前面加反斜杠进行转义,如. * ?这种有特殊含义直接打出来不能表达为三个字符,我们可以将其打为\. \* \?

元字符

正则表达式中使用了很多元字符,用来表示一些特殊的含义或功能。

表达式匹配
.小数点可以匹配除了换行符\n以外的任意一个字符 比如a.c可以匹配abc
|逻辑或操作符 比如(a
[]匹配字符集中的一个字符 比如[abc]d匹配ad或者bd或者cd
[^]对字符集求反,也就是上面的反操作。尖号必须在方括号里的最前面 比如[^abc]匹配a,b,c之外的任意一个字符
-定义[]里的一个字符区间,比如[a-g]匹配a到g中任意一个字符
\对紧跟其后的一个字符进行转义
()对表达式进行分组,将圆括号内的内容当做一个整体,并获得匹配的值
{n}表达式重复n次,比如\d{2}相当于\d\d,a{3}相当于aaa
{m,n}表达式至少重复m次,最多重复n次。比如ab{1,3}可以匹配ab或abb或abbb
{m,}表达式至少重复m次,比如\w\d{2,}可以匹配a12,_1111,M123等等
?匹配表达式0次或者1次,相当于{0,1},比如a[cd]?可以匹配a,ac,ad
+表达式至少出现1次,相当于{1,},比如a+b可以匹配ab,aab,aaab等等
*表达式出现0次到任意次,相当于{0,},比如\^*b可以匹配b,^^b等等
^在字符串开始的地方匹配,符号本身不匹配任何字符
$在字符串结束的地方匹配,符号本身不匹配任何字符
\b匹配一个单词边界,也就是单词和空格之间的位置,符号本身不匹配任何字符
\B匹配非单词边界,即左右两边都是\w范围或者左右两边都不是\w范围时的字符缝隙

预定义匹配字符集

表达式匹配
\d任意一个数字,0~9 中的任意一个
\w任意一个字母或数字或下划线,也就是 A-Z,a-z,0-9,_ 中的任意一个
\s空格、制表符、换页符等空白字符的其中任意一个
\D\d的反集,也就是非数字的任意一个字符,等同于[^\d]
\W\w的反集,也就是[^\w]
\S\s的反集,也就是[^\s]

贪婪与非贪婪模式

在重复匹配时,正则表达式默认总是往多的匹配,这被称为贪婪模式。比如,针对文本axxxaxxxa,表达式(a)(\w+)(a)中的\w+将匹配第一个a和最后一个a之间的所有字符xxxaxxx。可见,\w+在匹配的时候,总是尽可能多的匹配符合它规则的字符。
但是有时候这种模式获得的结果并不是我们想要的,这时在修饰匹配次数的特殊符号后再加上一个?,则可以使匹配次数不定的表达式尽可能少的匹配。

常用正则表达式

功能表达式
数字^[0-9]*$
n位的数字^\d{n}$
至少n位的数字^\d{n,}$
零和非零开头的数字`^(0 [1-9][0-9]*)$`
有n位小数的正实数^[0-9]+(.[0-9]{n})?$
非零的负整数^-[1-9]\d*$
非负浮点数^\d+(.\d+)?$
浮点数^(-?\d+)(.\d+)?$
日期格式^\d{4}-\d{1,2}-\d{1,2}
Email地址^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$
空白行\n\s*\r (可以用来删除空白行)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值