python024

正则表达式
正则表达式是对字符串操作的一种逻辑公式.我们一般使用正则表达式对字符串进行匹配和过滤.使用正则的优缺点:
优点:灵活,功能性强,逻辑性强
缺点:上手难,一旦上手,会爱上这个东西.
正则表达式由普通字符和元字符组成.元字符:元字符才是正则表达式的灵魂.元字符中的内容太多了,在这里我们介绍一些常用的.
1.字符组
字符组就是简单的用[]括起来.在[]中出现的内容会被匹配.例如[a:b:c]匹配a或b或c
如果字符组中的内容过多还可以使用-,例如:[a-z]匹配a到z之间的所有字母[0-9]匹配到所有的阿拉伯数字
2.简单元字符
基本的字符.常用的就那么几个
. 匹配出换行符以外的任意字符
\w 匹配字母或数字或下划线
\s 匹配任意的空白符
\d 匹配数字
\n 匹配一个换行符
\t 匹配一个制表符
\b 匹配一个单词的结尾
^ 匹配字符串的开始
$ 匹配字符串的结束
\W 匹配到非字母或数字或下划线
\D 匹配到非数字
\S 匹配非空白符
a|b 匹配字符a或字符b
() 匹配括号内的表达式,也表示一个组
[...] 匹配字符组中的字符
[^...] 匹配除了字符组中字符的所有字符
3.量词
我们目前匹配到的所有内容都是单一文字符号.那么如何一次性匹配到很多个字符呢,我们用到量词
* 重复零次或更多次
+ 重复一次或更多次
? 重复一次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
4.惰性匹配和贪婪匹配
在量词中的*,+,{}都属于贪婪匹配.就是尽可能多的匹配到结果
str: 麻花藤昨天让英雄联盟关服了
reg: 麻花藤.*
此时匹配到的是整句话
在使用.*后面如果加了?则是尽可能的少匹配.表示的是惰性匹配
str:   麻花藤昨天让英雄联盟关服了
reg:     麻花藤.*?
此时匹配的是麻花藤
str:<div>胡辣汤</div>
reg:<.*>
结果: <div>胡辣汤</div>
str:<div>胡辣汤</div>
reg:<.*?>
结果:<div>
     </div>
str:<div>胡辣汤</div>
reg:<(div|/div*)?>
结果:  <div>
       </div>
.*?x的特殊含义 找到下一个为止
str:abcdefgxhijklmn
reg:.*?x
结果:abcdefgx
5.分组
在正则中使用()进行分组.比如.我们要匹配一个相对复杂的身份证号.身份证号分成两种.老的身份证号有15位.新的身份证号有18位.并且新的身份证号结尾有可能是x.
^[1-9]\d{14}(\d(2)[0-9x])?$
^([1-9]\d{16}[0-9x]|[1-9]\d{14})$
6.转义
在正则表达式中,有很多有特殊意义的是元字符, 比如\n和\s等,如果要在正则中匹 配正常的"\n"而不是"换行符"就需要对"\"进行转义, 变成'\\'.
在python中,无论是正则表达式,还是待匹配的内容,都是以字符串的形式出现的,在字符串中\也有特殊的含义,本身还需要转义. 所以如果匹配⼀一次"\n", 字符串串中要写成'\\n', 那么正则里就要写成"\\\\n",这样就太麻烦了.这个时候我们就⽤用到了r'\n'这个概念, 此时的正则是r'\\n'就可以了.




转载于:https://www.cnblogs.com/Li-Kai-168/p/9768522.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值