1.可选项

比如:[colou?r],对color和colour,都可以匹配。这里,u?中的?表示紧邻着它的前一个字符是可选的

这里再举一个例子,7月4日的英文的额文本,7月,可以是July 也可以是Jul。我们可以写成[July|jul],但是,更简洁的写法是:[July?]

4日,可以是4,也可以是4th,也可以是fourth,所以,就是[fourth|4th|4],进一步简洁为[fourth|4(th)?],注意,这里的?就是作用于()里面的了

2.重复出现

[+]和[*]的作用和?类似。[+]表示紧邻的元素出现一次或者多次,而[*]表示之前紧邻的元素出现任意多次,或者不出现。

[+]和[*]和[?]这三个统称为量词,因为他们限定了匹配的次数。

我们来分析这段代码:

import re
mystr='<hr +size *= *[0-9]+ *>'
print(re.findall(mystr,'<hr      size   =14   >'))

这里分布分析:

1)hr和size之间,是有一个空格的,根据+表示,至少要有一个空格,多个也可以,因为在html语言中,hr和size必须要有空格。

2)=的左右两侧,可以有空格,也可以没有,也就是0到多个空格,这个时候,就是用*,而不能用=

3)[0-9]+表示有1个或者多个0到9之间的数字,最后一个*,很容易理解。

更进一步,在html中,实际上size这个也是可选的,比如<hr/>那就是使用缺省的size

import re
mystr='<hr( +size *= *[0-9]+)? *>'
print(re.match(mystr,'<hr   size  =    14   >').group(0))
print(re.match(mystr,'<hr>').group(0))

注意,这个时候,用findall是不对的,因为:

findall函数返回的总是正则表达式在字符串中所有匹配结果的列表,此处主要讨论列表中“结果”的展现方式,即findall中返回列表中每个元素包含的信息。

@1.当给出的正则表达式中带有多个括号时,列表的元素为多个字符串组成的tuple,tuple中字符串个数与括号对数相同,字符串内容与每个括号内的正则表达式相对应,并且排放顺序是按括号出现的顺序。

@2.当给出的正则表达式中带有一个括号时,列表的元素为字符串,此字符串的内容与括号中的正则表达式相对应(不是整个正则表达式的匹配内容)。

@3.当给出的正则表达式中不带括号时,列表的元素为字符串,此字符串为整个正则表达式匹配的内容。

而这里用match,也是起始位置开始匹配,如果匹配不到,就返回NONE,如果是如下代码,就出错了。

import re
mystr='王辰风    <hr( +size *= *[0-9]+)? *>'
print(re.match(mystr,'<hr   size  =    14   >').group(0))
print(re.match(mystr,'<hr>').group(0))

或者给成这样:

import re
mystr='(<hr( +size *= *[0-9]+)? *>)'
print(re.findall(mystr,'wcf <hr> <hr   size  =    14   >'))

转载于:https://www.cnblogs.com/aomi/p/7061194.html

正则表达式学习(2)相关推荐

  1. java正则表达式 1,Java正则表达式学习(1)

    Java正则表达式学习(一) 1.什么是正则表达式: 正则表达式(regular expressions) 是一种描述字符串集的方法,它是以字符串集中各种字符串的公有特征为依据的. 正则表达式可以用于 ...

  2. 正则表达式 学习笔记1.3

    书接上一回: 实例五:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /& ...

  3. 正则表达式 学习笔记4.3

    下面看看逆序环视结构: public class GeneralSix { public static void main(String[] args) { String[] strings = ne ...

  4. 正则表达式 学习笔记3.4

    第一段为合法html代码,第二段为不合法html代码.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office ...

  5. 手机号正则表达式验证_想精通正则表达式 这几个正则表达式学习资料及工具你必须有!...

    正则表达式不是什么开发语言,也不什么脚本语言,但是你在做项目开发的时候,离不开它.你可以把它理解过一种逻辑公式,正则表达式通常被用来检索.替换那些符合某个模式(规则)的文本.正则对刚入门的程序员,甚至 ...

  6. 想精通正则表达式 这几个正则表达式学习资料及工具你必须有!

    正则表达式不是什么开发语言,也不什么脚本语言,但是你在做项目开发的时候,离不开它.你可以把它理解过一种逻辑公式,正则表达式通常被用来检索.替换那些符合某个模式(规则)的文本.正则对刚入门的程序员,甚至 ...

  7. 正则表达式学习笔记011--贪婪和懒惰的匹配

    正则表达式学习笔记011--贪婪和懒惰的匹配 交流群1:251572072 交流群2:170933152 1.什么是贪婪匹配 从字面上理解:贪心,不满足,有多少要多少 比如正则里也一样:.*,.+,{ ...

  8. 正则表达式学习笔记010--子表达式的认识与应用

    正则表达式学习笔记010--子表达式的认识与应用 交流群1:251572072 交流群2:170933152 子表达式: ()用2个小括号,括起来的叫做子表达式 如: \d{3,4}([\s|-]?\ ...

  9. 正则表达式学习笔记009--大括号与选择符的认识与应用

    正则表达式学习笔记009--大括号与选择符的认识与应用 交流群1:251572072 交流群2:170933152 |  选择符 {n}前面的元素字符出现了n次 {n,}前面的元素字符最少出现n次,n ...

  10. 正则表达式学习笔记008--字符组简记法2

    正则表达式学习笔记008--字符组简记法2 交流群1:251572072 交流群2:170933152 \s [\t\n\r\f]     \t制表符     \n换行符     \r回车符     ...

最新文章

  1. centos 7 ssh 安装mysql,Centos 7 安装Airflow
  2. linux 观察应用使用内存的情况,Linux学习笔记:free和top命令查看系统内存使用情况...
  3. CNN基础知识(1)
  4. eclipse pmd使用_使用您自己的规则在Eclipse中自定义PMD
  5. USB OTG 的进一步理解
  6. [jQuery基础] jQuery动效案例(二) -- 图标特效、无限循环滚动(简易轮播图)
  7. 由浅入深了解Thrift(二)——Thrift工作原理
  8. 三星Galaxy S21 FE即将量产:8月登场 小屏满血旗舰!
  9. 软件测试:web渗透测试怎样入门!讲透了...
  10. android获取本地连接ip地址,C#获取本机IP地址(ipv4)
  11. linux max open,linux下修改max_user_processes和open_file的最大值
  12. 用shell把所有文件名修改为小写
  13. VBB 3.8.4 XSS
  14. 税务计算机 试题分析,税务师考试方式、题型、计算器使用规定
  15. arcgis分析道路节点中心性degree,closeness,betweenness
  16. html 首行缩进两个空格,关于css的text-indent首行缩进两个字符和图片缩进的问题...
  17. 微信小程序云开发———云存储
  18. filco的pin码_filco蓝牙键盘配对流程,filco 忍者二代 蓝牙怎么
  19. 惊闻“漫游成本只有一分钱”
  20. 信息收集之通过JS拓展信息面

热门文章

  1. 简哲,请让我的生活简单一点。——批《输入法破局研究——联盟推广》
  2. C++---deque双端队列
  3. python echarts接口_Python之图表Pyecharts
  4. python实现语义分割_如何用PyTorch进行语义分割?一文搞定
  5. python列表生成式原理_三元表达式/和/或如何在Python中工作/真与假的性质/列表生成/生成器,and,or,执行,原理,True,False,本质,生成式...
  6. 如果每天给你888元,只能看书学习,不能玩手机电脑,你能坚持多少天?
  7. 什么是bigdata
  8. 宾利为什么卖这么贵?
  9. 一定要多反思复盘和整理
  10. 都知道李嘉诚先生是一个有钱人