python--正则表达式

本文介绍了正则表达式的概念及其基本用法,包括字符组、元字符、量词等核心元素,并通过实例演示如何使用正则表达式进行字符串匹配。
官方定义:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

在线测试工具:http://tool.chinaz.com/regex/?qq-pf-to=pcqq.group

一:字符组:[]
在同一个位置可能出现的各种字符组成了一个字符组,在正则表达式中用[]表示
字符分为很多类,比如数字、字母、标点等等。

[012389]    #匹配012389
[0-9]   #匹配0123456789所有数字
[a-z]   #匹配所有的小写字母
[A-Z]   #匹配所有的大写字母
[a-dA-D]   #匹配小写a-d和大写A-D
[A-a]      #混用大小写的话,要根据ascii码,小的码放到前面,
注释:不建议大小写混用,因为中间的ascii码,还包括一些字符比如[   ]   /   ^ _ /等,混用会不准确

二、元字符
.         匹配除了换行符以外的任意字符
\w        匹配所有字母 数字 下划线
\d        匹配所有数字
\s        匹配任意空白符,空格符space,制表符tab,换行符enter等统称为空白符
\b        匹配一个字符的结尾
$         匹配字符串的结尾
^         匹配字符串的开头         #在[]括号里面表示非  比如[^和]   表示所有 不是‘和 ’的字符
\t        匹配制表符
\W        匹配非字母 数字 下划线
\S 匹配非空白符 \D 匹配非数字 a
|b 匹配a或者b () 匹配括号内的表达式,也表示一个组 [...] 匹配字符组中字符 [^...] 匹配除了字符组中字符的所有字符 注释:\w\W \s\S \d\D 任意一组都可以表示匹配所有字符

三、量词
?     匹配一次或者零次
*      匹配零次或者多次
+      匹配有一次或者多次
{n}   匹配n次
{n,}  匹配n次或者更多次
{n,m}   匹配n次到m次
注释:?  *  +都是贪婪运算,都是尽可能重复多次匹配
?有多种用法量词后面加一个?表示惰性运算,重复尽可能少的次数
四、元字符和量词的一些组合运用
例1:  .   ^   $
正则         待匹配字符                匹配结果                          说明
美.         美丽美好美人             美丽美好美人             匹配所有带有‘美’的字符
^美.        美丽美好美人               美丽                 匹配以‘美’为开头,再加一个任意非空白符的字符,找到即结束
^美&        美丽美好美人             没有匹配到
美.&        美丽美好美人               美人                 只匹配结尾的"美.$"
^美.&       美丽美好美人             没有匹配到
五、字符集[][^]
正则                     待匹配字符              匹配结果                             说明
李[杰莲英二棍子]*       李杰和李莲英和李二棍子     李杰  李莲英 李二棍子       匹配""字后面[杰莲英二棍子]的字符任意次
李[^和]*                李杰和李莲英和李二棍子    李杰  李莲英 李二棍子       匹配一个不是""的字符任意次

 


六、分组 ()与 或 |[^]
身份证号码是一个长度为15或18个字符的字符串,如果是15位则全部数字组成,首位不能为0;如果是18位,
则前17位全部是数字,末位可能是数字或x
^([1-9]\d{16}[0-9x]|[1-9]\d{14})&
七、转义符 \
在正则表达式中,有很多有特殊意义的是元字符,比如\d和\s等,如果要在正则中匹配正常的"\d"而不是"数字"就需要对"\"进行转义,变成'\\'。
正则         待匹配字符                   匹配结果                          说明
\\d             \d                         True             转义\之后变成\\,即可匹配
"\\\\d"        '\\d'                     True             如果在python中,字符串中的'\'也需要转义,所以每一个字符串'\'又需要转义一次
r'\\d'          r'\d'                      True             在字符串之前加r,让整个字符串不转义
注释:   带匹配的是字符是python中的代码
贪婪匹配:在满足匹配时,匹配尽可能长的字符串,默认情况下,采用贪婪匹配
*?      重复任意次,但尽可能少重复
+?      重复1次或更多次,但尽可能少重复
??      重复0次或1次,但尽可能少重复
{n,m}?  重复n到m次,但尽可能少重复
{n,}?   重复n次以上,但尽可能少重复

 

转载于:https://www.cnblogs.com/zzy-9318/p/8253412.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值