1. findall() 函数的2种表示形式

 import re
kk = re.compile(r'\d+')
kk.findall('one1two2three3four4')
#[1,2,3,4] #注意此处findall()的用法,可传两个参数;
kk = re.compile(r'\d+')
re.findall(kk,"one123")
#[1,2,3]

2. 正则表达式可能遇到的坑  --- 正则表达式中的括号()

1. 当正则表达式中  没有括号时,就是正常匹配,如本例中"/w+/s+/w+"

在本例中"/w+/s+/w+"第一次匹配到的字符为"2345  3456",由于是贪婪模式会     继续匹配,第二次从"4567"开始匹配匹配到的结果为字符串"4567 5678"

 import re
string="2345 3456 4567 5678"
regex=re.compile("\w+\s+\w+")
print(regex.findall(string))
#['2345 3456', '4567 5678']
#补充: 
#\s -- 匹配任何不可见字符,包括空格、制表符、换页符等等
#\S -- 匹配任何可见字符 通常[/s/S] -- 可匹配任意字符
#[\s\S]*? -- 匹配懒惰模式的任意字符

2. 当正则表达式中有  一个括号时,如"(\w+)\s+\w+"其输出的内容就是括号匹配到的内容

原理:正则表达式中有一个括号时,其输出的内容就是括号匹配到的内容,而不是整个表达式所匹配到的结果,但是整个正则表达式执行了,只不过只输出括号匹配到的内容,

匹配过程:

  1. 第一次匹配时跟上述没有括号时一样,匹配到 "2345  3456" ,只不过只输出(/w+)匹配     到的结果 即"2345",

  2. 第二次匹配同理从"4567" 开始,匹配到"4567  5678",但是,只输出"4567"

import re
string="2345 3456 4567 5678"
regex1=re.compile("(\w+)\s+\w+")
print(regex1.findall(string))
#['2345', '4567']

3. 当正则表达式中有两个括号时,如 "((\w+)\s+\w+)",其输出结果是一个list 中包含2个 tuple

  从输出的结果可以看出,有两个元组,每一个元组中有   两个字符串 :

     其中,第一个元组种的第一个字符串"2345 3456"是最外面的括号输出的结果,第二个字符串是里面括号(/w+)输出的结果 "2345",

       第二个元组是  第二次匹配的结果 -- 详解同第一次匹配。

import re
string="2345 3456 4567 5678"
regex2=re.compile("((\w+)\s+\w+)")
print(regex2.findall(string))
#[('2345 3456', '2345'), ('4567 5678', '4567')]

3. findall() 使用总结:

  第一个 regex 中不带有括号,其输出的内容就是整个表达式所匹配到的内容。

  第二个 regex 中带有1个括号,其输出的内容就是括号匹配到的内容,而不是整个表达式所匹配到的结果。

  第三个 regex 中是带有2个括号的,我们可以看到其输出是一个list 中包含2个 tuple,---  多个括号就会返回  多个括号分别匹配到的结果

正则表达式的特点:

  1. 有括号时只能匹配到括号中的内容,没有括号就正常匹配。

  2. 在正则里面 “()” 代表的是分组的意思,一个括号代表一个分组,你只能匹配到"()"中的内容

 

re模块 findall()详解的更多相关文章

  1. python re模块findall()详解

    今天写代码,在写到郑泽的时候遇到了一个坑,这个坑是re模块下的findall()函数. 下面我将结合代码,记录一下 import re string="abcdefg acbdgef abc ...

  2. opencart 模块开发详解

    opencart 模块开发详解 由 xiekanxiyang » 2013年 7月 11日 10:17 pm opencart 将页面分成若干模块, 每个模块可以有多个实例(可能这样说不是很恰当) 每 ...

  3. AngularJS模块的详解

    AngularJS模块的详解 在讲angularjs的模块之前,我们先介绍一下angular的一些知识点: AngularJS是纯客户端技术,完全用Javascript编写的.它使用的是网页开发的常规 ...

  4. [转帖]Nginx rewrite模块深入浅出详解

    Nginx rewrite模块深入浅出详解 https://www.cnblogs.com/beyang/p/7832460.html rewrite模块(ngx_http_rewrite_modul ...

  5. STM32开发 -- 4G模块开发详解(转)

    STM32开发 -- 4G模块开发详解(1) STM32开发 -- 4G模块开发详解(2) STM32开发 -- 4G模块开发详解(3) STM32开发 -- 4G模块开发详解(4)

  6. python之模块datetime详解

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之模块datetime详解 import datetime #data=datetime.dat ...

  7. Spring Boot的每个模块包详解

    Spring Boot的每个模块包详解,具体如下: 1.spring-boot-starter 这是Spring Boot的核心启动器,包含了自动配置.日志和YAML. 2.spring-boot-s ...

  8. Python 双向队列Deque、单向队列Queue 模块使用详解

    Python 双向队列Deque 模块使用详解 创建双向队列Deque序列 双向队列Deque提供了类似list的操作方法: #!/usr/bin/python3 import collections ...

  9. Ansible_常用文件模块使用详解

    一.Ansibel常用文件模块使用详解 1.file模块 1️⃣:file模块常用的参数列表: path       被管理文件的路径 state状态常用参数: absent           删除 ...

随机推荐

  1. html1,初识html

    vs code编辑器 安装插件 chinese 中文支持 open in browser 快速预览文件 view in browser 快捷键 快捷键 描述 shift + end 选中从光标到行尾 ...

  2. Windows和Linux下与VMware虚拟机通过内网IP通讯

    首先分两种情况:一种是你的电脑已经在一个内网的环境下且有额外的内网IP地址,和另一种只是想给自己电脑上的虚拟机分配个内网IP来通讯. ①有可用的内网IP 找到一个空闲的IP地址(这里以192.168. ...

  3. Eclipse直接运行算法第4版例子(重定向和读取指定路径文件)

    Eclipse直接运行算法第4版例子(重定向和读取指定路径文件)   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://b ...

  4. BFT-SMaRt:用Java做节点间的可靠信道

    目录 一.引子 二.名词统一 1. 节点id 2. 节点 3. 本地节点 4. 配置域 5. TTP 6. 陌生域 三.节点服务类 四.节点通信系统概览 五.节点通信层准备 1. 创建socket服务 ...

  5. 揭秘webpack plugin

    前言 Plugin(插件) 是 webpack 生态的的一个关键部分.它为社区提供了一种强大的方法来扩展 webpack 和开发 webpack 的编译过程.这篇文章将尝试探索 webpack plu ...

  6. npm 安装出现 run `npm audit fix` to fix them, or `npm audit` for details 解决办法

    1.npm  audit fix 2. npm audit fix --force 3.npm audit 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链 ...

  7. jenkins 配置ssh密钥登录

    1.找到一台服务器执行 ssh-keygen -t rsa 会在目录/root/.ssh生成id_rsa私钥.id_rsa.pub公钥,将公钥的内容写入到同目录下的authorized_keys文件( ...

  8. 20191102Java课堂记录

    1. import javax.swing.*; class AboutException { public static void main(String[] a) { int i=1, j=0, ...

  9. django操作命令

    下载安装 pip3 install django==1.11.21 -i https://pypi.tuna.tsinghua.edu.cn/simple 创建项目 1.终端找到存放项目的文件夹,dj ...

  10. 头条一面竟然问我Maven?

    maven package和maven install 有什么区别? 你常用的maven命令有哪些? <dependencyManagement> 是干什么的? 还有用过其它构建工具吗? ...