我们的目标是:通过这一套资料学习下来,通过熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。
上篇文章我们通过举例学习了字符串一些操作说明。今天讨论一下正则表达式的语法。也是经常会用到的。
1、正则表达式简介
正则表达式:regular expression ,简称:regex 或者RE,又称规则表达式,它不是某种语言所特有的。
在处理字符串时,经常会涉及查找符合某些复杂规则的字符串,正则表达式就是描述这些规则的工具。
正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。
2、行定位符
行定位符用来描述字符串的边界。“^”表示行的开始,“$”表示行的结尾。
如: ^tm
表示:要匹配的字符串tm开头,如tm1234 可以匹配,若是TOtm123就不匹配
如:tm$ 表示以tm结尾
3、元字符说明
上面所讲到的“^”和“$”就属于元字符,还有其它:
元字符 | 说明 | 元字符 | 说明 |
. | 匹配除换行符以外的任意字符 | \b | 匹配单词的的开始或者结束 |
\w | 匹配字母、数字、下划线或汉字 | ^ | 匹配字符串的开始 |
\s | 匹配任意的空白符 | $ | 匹配字符串的结束 |
\d | 匹配数字 |
举个例子: \bbaidu\w*\b ,这里是匹配以字母baidu开头的字母,然后\w 为任意的字母或者数字、或者汉字等,*这里指任意数量,就是限定符
4、限定符的说明
上面的例子\w* 是匹配任意数量的数字或者字母。若是想匹配特定说了的数字,该如何表示呢?如匹配10位的qq 号: ^\d{10}$
下面列出常用的限定符:
限定符 | 说明 | 举例 |
? | 匹配前面的字符0次或者一次 | your? 表达式匹配your ,也匹配youa |
+ | 匹配前面的字符1次或者多次 | go+gle 匹配gogle 到goo…gle |
* | 匹配前面的字符0次或者多次 | go*gle 匹配ggle 到goo…gle |
{n} | 匹配前面的字符n次 | go{2}gle 只匹配google |
{n,} | 匹配前面的字符n次或以上 | go{2}gle 匹配google 到goo…gle |
{n,m} | 匹配前面的字符n次d到m次 | go{2,4}gle匹配google 、gooogle、goooogle |
5、字符类的匹配
没有预定义元字符的字符集合如何进行匹配呢?如含有某些特定的字母如元音字母:a\e\i\o\u,可以直接用方括号来匹配,如[]a,e,I,o,u]
如:[0-9]代表的含义和\d是一致的
6、排除字符
不符合某些字符可以使用[^+字母表示]
如:[^a-z A-Z] 表示排查字母的意思
7、选择字符
若是包含多个条件进行选择的逻辑,怎么书写表达式呢?可以使用|来连接
如:身份证的表达式
(^\d{15}$)|(^\d{18}$)|(^\d{17})(\d|x|X$) 即表示身份证由15个数字,或者18个纯数字,或者17个数字+x或者加X 进行匹配
8、转义字符:\
为什么要用到转义字符?如我们要使用IP地址,用正则表达式匹配127.0.0.1这样的格式。当然,我们不能直接使用“.”,因为“.”是元字符可以匹配除换行符意外的任意字符。
需要使用转义字符“\”,正则式:
[1-9]{1-3}\.[0-9]{1-3}\.[0-9] {1-3}\.[0-9] {1-3}
9、分组
分组可以使用括号()来实现,如上面的匹配127.0.0.1的例子
[1-9]{1-3}\.[0-9]{1-3}\.[0-9] {1-3}\.[0-9] {1-3}
可以改写成:[1-9]{1-3}(\.[0-9]{1-3}){3}
上面的例子就达到了分组,也即是子表达式。
(\.[0-9]{1-3}){3} :即为对分组(\.[0-9]{1-3}) 重复了三次操作
10、python 中使用正则式语法
在python中使用正则表达式时,将其作为模式字符串使用的。例如,匹配一个非字母字符的正则表达式转换为模式字符串:’[^a-z A-Z]’
若是匹配以p开头的单词的正则表达式转换为模式字符串,
如写成:’\bp\w*\b’ 这个表达显然时不正确的,因为没有进行转义(’\\bp\\w*\\b’)。
为了避免大量的转义字符要写,python中可以写成原生字符串,即在模式字符串前加r或者R。如上面的例子:’\\bp\\w*\\b’ >写成 r’\bp\w*\b’ 即可。
今天先写学习到这里了,每天进步一点点。今天也要加油啊!
标签:字符,匹配,16,Python,字母,gle,正则表达式,字符串 From: https://blog.csdn.net/weixin_45999406/article/details/142218939