re 模块, 正则表达式 \w+\d+ 的重复问题引发的题目解析
题目
计算以下代码的结果
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+ 的重复问题引发的题目解析相关推荐
- Python的re模块 --- 正则表达式操作
这个模块提供了与 Perl 语言类似的正则表达式匹配操作. 模式和被搜索的字符串既可以是 Unicode 字符串 (str) ,也可以是8位字节串 (bytes). 但是,Unicode 字符串与8位 ...
- python- re模块(正则表达式)
讲正题之前我们先来看一个例子:https://reg.jd.com/reg/person?ReturnUrl=https%3A//www.jd.com/ 这是京东的注册页面,打开页面我们就看到这些要求 ...
- Python re模块,正则表达式
re模块 讲正题之前我们先来看一个例子:https://reg.jd.com/reg/person?ReturnUrl=https%3A//www.jd.com/ 这是京东的注册页面,打开页面我们就看 ...
- 正则表达式 \w \d . \s常用字符的简写
正则表达式 \w \s \d \b . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 等价于 '[A-Za-z0-9_]'. \s 匹配任意的空白符 \d 匹配数字 \b ...
- Python之re模块 —— 正则表达式操作
Python之re模块 -- 正则表达式操作 转自:http://www.cnblogs.com/PythonHome/archive/2011/11/19/2255459.html 这个模块提供了与 ...
- python中的正则表达式re模块_Python中的re模块--正则表达式
Python中的re模块--正则表达式 使用match从字符串开头匹配 以匹配国内手机号为例,通常手机号为11位,以1开头.大概是这样13509094747,(这个号码是我随便写的,请不要拨打),我们 ...
- python正则表达式模块_Python常用模块——正则表达式re模块
Python常用模块--正则表达式re模块 引子 请从以下文件里取出所有的手机号 姓名 地区 身高 体重 电话 况咏蜜 北京 171 48 13651054608 王心颜 上海 169 46 1381 ...
- re模块(正则表达式)
引子 请从以下文件里取出所有的手机号 姓名 地区 身高 体重 电话 况咏蜜 北京 171 48 13651054608 王心颜 上海 169 46 13813234424 马纤羽 深圳 173 50 ...
- 正则表达式 \w \s \d \b
正则表达式 \w \s \d \b . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 等价于 '[^A-Za-z0-9_]'. \s 匹配任意的空白符 \d 匹配数字 \b ...
最新文章
- PTA基础编程题目集-6-7 统计某类完全平方数
- DHCP协议原理及其实现流程
- day34 并行并发、进程开启、僵尸及孤儿进程
- 原创内容屡屡被盗?从源头对资源盗用说NO
- 【GIF动画+完整可运行源代码】C++实现 冒泡排序——十大经典排序算法之一
- java 设置两个方法互斥_分享两个操作Java枚举的实用方法
- Java与Python的区别告诉你,学什么看自己
- 假如我们等不到对的人,就趁孤单让自己优秀起来。单身是最好的升值期
- 【WP开发】JSON数据的读与写
- python爬人人贷代码视频_利用python爬取人人贷网的数据
- java读取配置文件路径问题
- Qhsusb Dload驱动
- Win10文件无法重命名
- GPS观测值的线性组合
- EXCEL多页打印保留表头
- arm+linux+usb驱动开发,Linux+ARM下的USB驱动开发
- mysql重复写入_MYSQL避免重复插入记录的三种方法
- 程序人生:Facebook的23岁创始人
- 知识图谱入门 【八】- 语义搜索
- rtmp jwplayer简单应用
热门文章
- python sorted list 包含元组 字典 的多列排序
- 为什么Linux登录后显示“-bash-3.2#”-转
- [Java] 蓝桥杯ADV-202 算法提高 最长公共子序列
- [Python] L1-034. 点赞 团体程序设计天梯赛GPLT
- L1-053 电子汪-PAT团体程序设计天梯赛GPLT
- 【数据库】E-R图向关系模型转换的规则
- 计算机网络运用专业,计算机网络专业
- map is not in the sudoers file.This incident will be reported.的解决方法
- java基础 作业(一)
- vc mscomm串口通信使用了CButtonST按钮类软件分析