题目

计算以下代码的结果

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, 然后就没小数点就没办法匹配下去了。

所以是匹配不成功的。

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

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

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

  2. 【Python开发】Python之re模块 —— 正则表达式操作

    Python之re模块 -- 正则表达式操作 这个模块提供了与 Perl 相似l的正则表达式匹配操作.Unicode字符串也同样适用. 正则表达式使用反斜杠" \ "来代表特殊形式 ...

  3. 正则表达式[\w]+,\w+,[\w+]

    正则表达式[\w]+,\w+,[\w+] 三者区别? [],[ABC]+,[\w./-]+ 表达什么? 正则表达式[\w]+,\w+,[\w+] 三者有何区别:[\w]+和\w+没有区别,都是匹配数字 ...

  4. re 模块 正则表达式

    re模块(正则表达式)   一.什么是正则表达式 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则.(在Python中)它 ...

  5. 5-5 re模块 正则表达式

    1,正则表达式 正则表达式,就是匹配字符串内容的一种规则. 官方定义:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串”,这个“规则字 ...

  6. Python3学习之路~5.13 re模块 正则表达式

    re模块用于对python的正则表达式的操作. 常用正则表达式符号 字符数字: . 匹配除换行符以外的任意字符,即[^\n] \s 匹配任意空白符(如\t.\n.\r ) \S 匹配任意非空白符 \w ...

  7. python中的re模块——正则表达式

    re模块:正则表达式 正则表达式:为匹配字符 import re #导入re模块 #re.findall('正则表达式','被匹配字符') re模块下findall用法 在正则表达式中: \w 表示匹 ...

  8. day20re模块 正则表达式

    re模块,正则1 re是什么 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法. 就是用来描述一类事物的规则.就是一些带有特殊含义的符号或者符号的组合.    作 ...

  9. Python之re模块正则表达式

    re模块用于对python的正则表达式的操作 字符: .匹配除换行符以外的任意字符 \w匹配字母或数字或下划线或汉字 \s匹配任意空白符 \b匹配单词的开始或结束 ^匹配字符串的开始 $匹配字符串的结 ...

随机推荐

  1. /proc/filesystems各字段含义

    /proc/filesystems A text listing of the filesystems which were compiled into the kernel. Incidentall ...

  2. 卸载CUDA和cuDNN

    卸载CUDA和cuDNN 1.卸载CUDA 本教程只针对对于.run方式安装的,其他的没有进行测试 打开终端,输入sudo /usr/local/cuda-10.0/bin/uninstall_cud ...

  3. Android基础相关面试问题-binder面试问题详解

    Linux内核的基础知识: 进程隔离/虚拟地址空间:在操作系统中为了保护某个进程互不干扰就设计了一个叫“进程隔离”的技术,防止进程A可以操作进程B的数据.而进程隔离技术用到了虚拟地址空间,进程A的虚拟 ...

  4. 使用Mutex實現單一程式執行個體的注意事項(转)

    相信大家都知道在.NET程式中若要實現單一程式執行個體,一般來說有幾種方法,像是去判斷是否已經有開啟的Process是相同的程式.用Mutex與Semaphore之類的技術來判斷是否程式正在開啟.但是 ...

  5. 留言条.html .js来完成

    let data = [{ username: "张桑0", time: "2017-09-07 12:00:00", text: "留言文本内容.& ...

  6. mysql router使用配置

    mysql router使用配置 参考资料: https://www.jianshu.com/p/7fc8d77bea59 一.架构图 介绍: MySQL Router是处于应用client和dbse ...

  7. pytorch tensor 维度理解.md

    torch.randn torch.randn(*sizes, out=None) → Tensor(张量) 返回一个张量,包含了从标准正态分布(均值为0,方差为 1)中抽取一组随机数,形状由可变参数 ...

  8. webpack5持久化缓存

    Opt-in webpack 旨在注重构建安全而非性能.我们没有打算默认启用这一功能,主要原因在于此功能虽然有 95% 几率提升性能,但仍有 5% 的几率中断你的应用程序/工作流/构建. 什么是缓存失 ...

  9. Codevs 1200 同余方程 2012年NOIP全国联赛提高组

    1200 同余方程 2012年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 求关于 x 同余方程 a ...

  10. vuex和localStorage的存储区别

    vuex中的数据是存储在内存中的,localStorage中的数据是存储在浏览器的application中的