标签:要求 输出 span 划线 模块 必须 产业 结果 dfs
计算以下代码的结果
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+ 重复匹配问题
如果是认为是 35615 应该是产业以下两种分析方式
很明显 \w+ 可以匹配数字字母下划线所以 后面的 35615 都是属于 \w+ de 匹配范围,所以这个分析方式绝对是错的
这个分析方式已经基本上都对了, 但是在 \w+\d+ 一起对数字的处理的时候, 是使用的最小回退, 即值给一位给 \d+ 所以不会全部把35615给他
看起来这样子匹配是可以的,貌似。
但是 第二个 \w+\d+ 是链接在一起的, 即是要求必须\w+后面有数字,因此 \w+\d+、 就只能匹配到 15313, 然后就没小数点就没办法匹配下去了。
所以是匹配不成功的。
re 模块, 正则表达式 \w+\d+ 的重复问题引发的题目解析
标签:要求 输出 span 划线 模块 必须 产业 结果 dfs
原文地址:https://www.cnblogs.com/shijieli/p/10800304.html