正则表达式(python re模块)

版权声明:一个苦逼初学者的原创小博客。 https://blog.csdn.net/SenZendao/article/details/81950652

正则表达式不属于任何一个语言,但是每个语言里面都会用到正则表达式(今天主要总结一下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

猜你喜欢

转载自blog.csdn.net/SenZendao/article/details/81950652