正则表达式(python re模块)

正则表达式不属于任何一个语言,但是每个语言里面都会用到正则表达式(今天主要总结一下python中的正则表达式,也就是re模块)

什么是正则表达式?

正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本。
Regular Expression的“Regular”一般被译为“正则”、“正规”、“常规”。此处的“Regular”即是“规则”、“规律”的意思,Regular Expression即“描述某种规则的表达式”之意。
正则表达式的规则特别多,大家可以去百度百科搜索一下,真的特别详细,我在这里就不给大家搬运了吧,算了还是当一个搬运工吧。。。。
这里写图片描述
这里写图片描述
这里写图片描述

真的有点多,想要短时间熟记在心是不存在的,我们只能了解知道有这个方法,然后在以后的过程中使用时再回来找找方法,多用几次就可以记住了,否则这样硬记效率真的非常低。

上面都是正则表达式的概述,下面说说python中的正则表达式吧,也就是re模块。

表示字符

这里写图片描述

原生字符串

Python中字符串前面加上 r 表示原生字符串,
与大多数编程语言相同,正则表达式里使用”\”作为转义字符,这就可能造成反斜杠困扰。假如你需要匹配文本中的字符”\”,那么使用编程语言表示的正则表达式里将需要4个反斜杠”\”:前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。
Python里的原生字符串很好地解决了这个问题,有了原始字符串,你再也不用担心是不是漏写了反斜杠,写出来的表达式也更直观。

表示数量

这里写图片描述

表示边界

这里写图片描述

匹配分组

这里写图片描述

Python中的贪婪与非贪婪

Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;
非贪婪则相反,总是尝试匹配尽可能少的字符。
在”*”,”?”,”+”,”{m,n}”后面加上?,使贪婪变成非贪婪。
正则表达式模式中使用到通配字,那它在从左到右的顺序求值时,会尽量“抓取”满足匹配最长字符串,在我们上面的例子里面,“.+”会从字符串的启始处抓取满足模式的最长字符,其中包括我们想得到的第一个整型字段的中的大部分,“\d+”只需一位字符就可以匹配,所以它匹配了数字“4”,而“.+”则匹配了从字符串起始到这个第一位数字4之前的所有字符。
解决方式:非贪婪操作符“?”,这个操作符可以用在”*”,”+”,”?”的后面,要求正则匹配的越少越好。

正则这个东西真的不太难,但是又很难。靠记忆是不存在的,必须多使用,才能掌握,下面我把字符的规则总结一下吧,代码就不写了,没啥意义,写了也就截个图出个结果,还不如自己跑一遍呢。

今晚本来想把re的高级用法也总结一下,一会儿看看时间还够不够吧,尽力而为。

贴两道小练习,大家看看能不能轻松解决,反正我是费了老大劲了。

1、写一个正则,能验证是否是合法的手机号。可以了解下移动联通电信手机号的号码段

2、写一个正则验证下邮箱
1、只允许英文字母、数字、下划线、英文句号、以及中划线组成
2、结尾是qq.com或163.com或126.com

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值