博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python: 正则表达式
阅读量:5896 次
发布时间:2019-06-19

本文共 2010 字,大约阅读时间需要 6 分钟。

1.了解正则表达式

正则表达式是对字符串操作的一种逻辑公式,是用来匹配字符串的非常强大的工具,利用正则表达式来提取想要的内容。

正则表达式的大致匹配过程如下

1)依次拿出表达式和文本中的字符比较

2)如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。

3)如果表达式中有量词或边界,这个过程会稍微有些不同。

2.正则表达式的语法规则

1)  . 匹配任意字符

eg:

>>>m=re.match(r'a.','a99')

>>>m

<-sre.SRE_Match object;span=(0,2),match='a9'>

2)  ^ 匹配字符串开头 

eg:

>>>m=re.match(r'^a','a99')

>>>m

<-sre.SRE_Match object;span=(0,1),match='a'>

3)  $ 匹配字符串结尾

eg:

>>>m=re.match(r'.*?a$','a99a')

>>>m

<-sre.SRE_Match object;span=(0,4),match='a99a'>

4)  | 逻辑或操作符

eg:

>>>m=re.match(r'a|A','A99')

>>>m

<-sre.SRE_Match object;span=(0,1),match='A'>

 

5)  [] 匹配内部的任一字符或者子表达式

eg1:

>>>m=re.match(r'[a-z]+','dgfjjghhj')

>>>m

<-sre.SRE_Match object;span=(0,9),match='dgfjjghhj'>

eg2:

>>>m=re.match(r'[a-z]','dgfjjghhj')

>>>m

<-sre.SRE_Match object;span=(0,9),match='d'>

 

6)  [^] 对字符集合取非

eg:

>>>m=re.match(r'[^a-zA-Z0-9]+','@dgfjjghhj')

>>>m

<-sre.SRE_Match object;span=(0,1),match='@'>

 

7)  - 定义一个区间

eg:

>>>m=re.match(r'[^a-zA-Z0-9]+','@dgfjjghhj')

>>>m

<-sre.SRE_Match object;span=(0,1),match='@'>

 

8)  \ 对下一字符取非(通常是普通变特殊,特殊变普通)

eg:

>>>m=re.match(r'\\','\\abc')

>>>m

<-sre.SRE_Match object;span=(0,1),match='\\'>

 

9)  * 匹配前面的字符或者子表达式0次或者多次

eg:

>>>m=re.match(r'[a-zA-Z0-9]+','dgfjjghhj')

>>>m

<-sre.SRE_Match object;span=(0,9),match='dgfjjghhj'>

 

10)  ? 匹配前面的字符或者子表达式0次或者1次

eg:

>>>m=re.match(r'a?','dgfjjghhj')

>>>m

<-sre.SRE_Match object;span=(0,0),match=''>

字符串里没有a也能匹配的上

11)  *? 惰性匹配上一个

匹配到第一个"就结束了一次匹配。不会继续向后匹配。因为他懒惰嘛。

>>>m=re.match(r'a*?','aa')

>>>m

<-sre.SRE_Match object;span=(0,0),match=''>

这是我在py 解释器里结果,我不知道什么原因一次都没匹配,如果谁知道,请留评论,谢谢

 

12)  +? 惰性匹配上一个

eg1:

>>>m=re.match(r'a+?','aaa')

>>>m

<-sre.SRE_Match object;span=(0,1),match='a'>

匹配到第一个"就结束了一次匹配。不会继续向后匹配。因为他懒惰嘛。

eg2:

>>>m=re.match(r'a+','aaa')

>>>m

<-sre.SRE_Match object;span=(0,3),match='aaa'>

 13)  + 匹配上一个字符或者子表达式一次或者多次

eg1:

>>>m=re.match(r'a+','aaa')

>>>m

<-sre.SRE_Match object;span=(0,3),match='aaa'>

eg1:

>>>m=re.match(r'a','aaa')

>>>m

<-sre.SRE_Match object;span=(0,1),match='a'>

 

 

未完待续

 

转载于:https://www.cnblogs.com/baxianhua/p/8329615.html

你可能感兴趣的文章
mybatis 应用
查看>>
基于JDK1.8,Java容器源码分析
查看>>
磁盘在线做raid
查看>>
十月份技术指标
查看>>
大数据的学习规划
查看>>
等级保护和分级保护有什么不一样?
查看>>
如何把视频kux格式转换mp4 手机怎么观看kux视频
查看>>
MyBatis单条插入后返回自增的id
查看>>
【推荐】App多渠道打包工具
查看>>
阿里云六大IoT相关平台公测、升级,联合美的推出定制芯片及智能家电OS平台...
查看>>
微信公众平台开发之一,公众平台介绍
查看>>
使用Criteria建立分组统计查询
查看>>
dispatch queues GCD
查看>>
分布式服务(RPC)+分布式消息队列(MQ)面试题精选
查看>>
UIView与CALayer的区别,很详细
查看>>
互助平台是什么?互助系统怎么开发
查看>>
Python里的多继承究竟怎么理解
查看>>
AI最新用途:挑战赛利用AI技术对自然灾害航拍图像进行分类
查看>>
旅游负面舆情暴发,中移能力开放商店舆情监测系统助你应对有方!
查看>>
redhat 7.0安装oracle 11g错误:make: *** [emdctl] Error
查看>>