题目

计算以下代码的结果

s = "?!.18)dajslj$12.15613sdadw.123sdasda35615.168sndsda$15.6sdasd.sdfsdgw123.156s"p1 = re.compile("\w+\.\w+\d+\.+\d+")
print(p1.findall(s)) 

p1 = re.compile("(\w+)\.(\w+)((\d+)\.+\d+)")
print(p1.findall(s))  

答案

# ['3265sdadw.sdasda35615.168', '6sdasd.sdfsdgw123.156']# [('3265sdadw', 'sdasda3561', '5.168', '5'), ('6sdasd', 'sdfsdgw12', '3.156', '3')]

解析

本题考查 正则分组优先原则以及输出格式

附带考查 \w+ \d+ 重复匹配问题

思考

第一个  \d+ 为什么匹配到的是 5? 不应该是 35615吗?

如果是认为是 35615 应该是产业以下两种分析方式

方式一

很明显 \w+ 可以匹配数字字母下划线所以 后面的 35615 都是属于 \w+ de 匹配范围,所以这个分析方式绝对是错的

方式二

这个分析方式已经基本上都对了, 但是在 \w+\d+ 一起对数字的处理的时候, 是使用的最小回退, 即值给一位给 \d+ 所以不会全部把35615给他

正确方式

最开始的"12" 为什么不会被 \w+ 匹配成功?

看起来这样子匹配是可以的,貌似。

但是 第二个 \w+\d+ 是链接在一起的, 即是要求必须\w+后面有数字,因此 \w+\d+、 就只能匹配到 15313, 然后就没小数点就没办法匹配下去了。

所以是匹配不成功的。

转载于:https://www.cnblogs.com/shijieli/p/10800304.html

re 模块, 正则表达式 \w+\d+ 的重复问题引发的题目解析相关推荐

  1. Python的re模块 --- 正则表达式操作

    这个模块提供了与 Perl 语言类似的正则表达式匹配操作. 模式和被搜索的字符串既可以是 Unicode 字符串 (str) ,也可以是8位字节串 (bytes). 但是,Unicode 字符串与8位 ...

  2. python- re模块(正则表达式)

    讲正题之前我们先来看一个例子:https://reg.jd.com/reg/person?ReturnUrl=https%3A//www.jd.com/ 这是京东的注册页面,打开页面我们就看到这些要求 ...

  3. Python re模块,正则表达式

    re模块 讲正题之前我们先来看一个例子:https://reg.jd.com/reg/person?ReturnUrl=https%3A//www.jd.com/ 这是京东的注册页面,打开页面我们就看 ...

  4. 正则表达式 \w \d . \s常用字符的简写

    正则表达式 \w \s \d \b  . 匹配除换行符以外的任意字符  \w 匹配字母或数字或下划线或汉字 等价于 '[A-Za-z0-9_]'.  \s 匹配任意的空白符  \d 匹配数字  \b  ...

  5. Python之re模块 —— 正则表达式操作

    Python之re模块 -- 正则表达式操作 转自:http://www.cnblogs.com/PythonHome/archive/2011/11/19/2255459.html 这个模块提供了与 ...

  6. python中的正则表达式re模块_Python中的re模块--正则表达式

    Python中的re模块--正则表达式 使用match从字符串开头匹配 以匹配国内手机号为例,通常手机号为11位,以1开头.大概是这样13509094747,(这个号码是我随便写的,请不要拨打),我们 ...

  7. python正则表达式模块_Python常用模块——正则表达式re模块

    Python常用模块--正则表达式re模块 引子 请从以下文件里取出所有的手机号 姓名 地区 身高 体重 电话 况咏蜜 北京 171 48 13651054608 王心颜 上海 169 46 1381 ...

  8. re模块(正则表达式)

    引子 请从以下文件里取出所有的手机号 姓名 地区 身高 体重 电话 况咏蜜 北京 171 48 13651054608 王心颜 上海 169 46 13813234424 马纤羽 深圳 173 50 ...

  9. 正则表达式 \w \s \d \b

    正则表达式 \w \s \d \b . 匹配除换行符以外的任意字符  \w 匹配字母或数字或下划线或汉字 等价于 '[^A-Za-z0-9_]'.  \s 匹配任意的空白符  \d 匹配数字  \b ...

最新文章

  1. PTA基础编程题目集-6-7 统计某类完全平方数
  2. DHCP协议原理及其实现流程
  3. day34 并行并发、进程开启、僵尸及孤儿进程
  4. 原创内容屡屡被盗?从源头对资源盗用说NO
  5. 【GIF动画+完整可运行源代码】C++实现 冒泡排序——十大经典排序算法之一
  6. java 设置两个方法互斥_分享两个操作Java枚举的实用方法
  7. Java与Python的区别告诉你,学什么看自己
  8. 假如我们等不到对的人,就趁孤单让自己优秀起来。单身是最好的升值期
  9. 【WP开发】JSON数据的读与写
  10. python爬人人贷代码视频_利用python爬取人人贷网的数据
  11. java读取配置文件路径问题
  12. Qhsusb Dload驱动
  13. Win10文件无法重命名
  14. GPS观测值的线性组合
  15. EXCEL多页打印保留表头
  16. arm+linux+usb驱动开发,Linux+ARM下的USB驱动开发
  17. mysql重复写入_MYSQL避免重复插入记录的三种方法
  18. 程序人生:Facebook的23岁创始人
  19. 知识图谱入门 【八】- 语义搜索
  20. rtmp jwplayer简单应用

热门文章

  1. python sorted list 包含元组 字典 的多列排序
  2. 为什么Linux登录后显示“-bash-3.2#”-转
  3. [Java] 蓝桥杯ADV-202 算法提高 最长公共子序列
  4. [Python] L1-034. 点赞 团体程序设计天梯赛GPLT
  5. L1-053 电子汪-PAT团体程序设计天梯赛GPLT
  6. 【数据库】E-R图向关系模型转换的规则
  7. 计算机网络运用专业,计算机网络专业
  8. map is not in the sudoers file.This incident will be reported.的解决方法
  9. java基础 作业(一)
  10. vc mscomm串口通信使用了CButtonST按钮类软件分析