title: Python

subtitle: 1.re模块findall函数用法

date: 2018-12-13 10:17:28

Python re 模块 findall 函数用法简述

本文档介绍了正则表达式元字符 和 re模块 findall 函数用法。

正则表达式元字符

给予正则表达式强大的功能和灵活性。

表 示 法 描述 正则表达式示例
符号
literal 匹配文本字符串的字面值literal foo
. 匹配任何字符(除了\n 之外) b.b
^ 匹配字符串起始部分 ^Dear
$ 匹配字符串终止部分 /bin/*sh$
* 匹配 0 次或者多次前面出现的正则表达式 [A-Za-z0-9]*
+ 匹配 1 次或者多次前面出现的正则表达式 [a-z]+.com
? 匹配 0 次或者 1 次前面出现的正则表达式 goo?
{N} 匹配 N 次前面出现的正则表达式 [0-9]{3}
{M,N} 匹配 M~N 次前面出现的正则表达式 [0-9]{5,9}
[…] 匹配来自字符集的任意单一字符 [aeiou]
[..x−y..] 匹配 x~y 范围中的任意单一字符 [0-9], [A-Za-z]
[^…] 不匹配此字符集中出现的任何一个字符,包括某一范围的字符( 如果在此字符集中出现) [^aeiou], [^A-Za-z0-9]
(…) 匹配封闭的正则表达式,然后另存为子组 ([0-9]{3})?
特殊字符
\d 匹配任何十进制数字,与[0-9]一致( \D 与\d 相反,不匹配任何非数值型的数字) data\d+.txt
\w 匹配任何字母数字字符,与[A-Za-z0-9_]相同( \W 与之相反) [A-Za-z_]\w+
\s 匹配任何空格字符,与[\n\t\r\v\f]相同( \S 与之相反) of\sthe
\b 匹配任何单词边界( \B 与之相反) \bThe\b
\N 匹配已保存的子组 N(参见上面的(…)) price: \16
\c 逐字匹配任何特殊字符 c(即,仅按照字面意义匹配,不匹配特殊含义) \., \\, \*
\A(\Z) 匹配字符串的起始(结束)(另见上面介绍的^和$) \ADear
扩展表示法
(?iLmsux) 在正则表达式中嵌入一个或者多个特殊“标记” 参数(或者通过函数/方法) (?x),(? im)
(?:…) 表示一个匹配不用保存的分组 (?:\w+.)*
(?P<name>…) 像一个仅由 name 标识而不是数字 ID 标识的正则分组匹配 (?P<data>)
(?P=name) 在同一字符串中匹配由(?P<name)分组的之前文本 (?P=data)
(?#…) 表示注释,所有内容都被忽略 (?#comment)
(?=…) 匹配条件是如果…出现在之后的位置,而不使用输入字符串;称作正向前视断言 (?=.com)
(?!…) 匹配条件是如果…不出现在之后的位置,而不使用输入字符串;称作负向前视断言 (?!.net)
(?<=…) 匹配条件是如果…出现在之前的位置,而不使用输入字符串;称作正向后视断言 (?<=800-)
(?<!…) 匹配条件是如果…不出现在之前的位置,而不使用输入字符串;称作负向后视断言 (?<!192\.168\.)

使用到的特殊字符

表 示 法 描述 正则表达式示例
特殊字符
\w 匹配任何字母数字字符,与[A-Za-z0-9_]相同( \W 与之相反) [A-Za-z_]\w+
\s 匹配任何空格字符,与[\n\t\r\v\f]相同( \S 与之相反) of\sthe

findall函数

findall函数返回的总是正则表达式在字符串中所有匹配结果的列表,此处主要讨论列表中“结果”的展现方式,即findall中返回列表中每个元素包含的信息。

1. findall

  1. # findall
  2. import re
  3. s = "456123sad 789re3dfheasdf a123fas 123awef q3segd a123dsas"
  4. re0subject1 = re.compile('\w+\s+')
  5. print(re0subject1.findall(s))
  6. > 执行结果:
  7. ['456123sad ', '789re3dfheasdf ', 'a123fas ', '123awef ', 'q3segd ']

当给出的正则表达式中不带括号时,列表的元素为字符串,此字符串为整个正则表达式匹配的内容。

注意:此处出现的匹配是\w+\s+,最后一个字符串没有空格字符,所以没有匹配。

  1. # findall
  2. import re
  3. s = "456123sad 789re3dfheasdf a123fas 123awef q3segd a123dsas "
  4. re0subject2 = re.compile('\w+\s+')
  5. print(re0subject2.findall(s))
  6. > 执行结果:
  7. ['456123sad ', '789re3dfheasdf ', 'a123fas ', '123awef ', 'q3segd ', 'a123dsas ']

当给出的正则表达式中不带括号时,列表的元素为字符串,此字符串为整个正则表达式匹配的内容。

2. findall

  1. import re
  2. s = "456123sad 789111re3dfheasdf a123fas 123awef q3segd a123dsas "
  3. # s = "adfad asdfasdf asdfas asdfawef asd adsfas "
  4. re0subject3 = re.compile('(\w+)\s+\w+')
  5. print(re0subject3.findall(s))
  6. > 执行结果:
  7. ['456123sad', 'a123fas', 'q3segd']

当给出的正则表达式中带有一个括号时,列表的元素为字符串,此字符串的内容与括号中的正则表达式相对应(不是整个正则表达式的匹配内容)。

3. findall

  1. import re
  2. s = "456123sad 789111re3dfheasdf a123fas 123awef q3segd a123dsas "
  3. # s = "adfad asdfasdf asdfas asdfawef asd adsfas "
  4. re0subject3 = re.compile('((\w+)\s+\w+)')
  5. print(re0subject3.findall(s))
  6. > 执行结果:
  7. [('456123sad 789111re3dfheasdf', '456123sad'), ('a123fas 123awef', 'a123fas'), ('q3segd a123dsas', 'q3segd')]

当给出的正则表达式中带有多个括号时,列表的元素为多个字符串组成的元组,元组中字符串个数与括号对数相同,字符串内容与每个括号内的正则表达式相对应,并且排放顺序是按括号出现的顺序。

re模块findall函数用法的更多相关文章

  1. Python3正则匹配re.split,re.finditer及re.findall函数用法详解

    这篇文章主要介绍了Python3正则匹配re.split,re.finditer及re.findall函数用法,结合实例形式详细分析了正则匹配re.split,re.finditer及re.finda ...

  2. Python re 模块findall() 函数返回值展现方式详解

    findall 函数: 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表. 注意: match 和 search 是匹配一次 findall 匹配所有,mat ...

  3. python re模块findall使用

    今天练习re模块时候出现了一个很奇怪的问题,同样的正则表达式用re.search()与用re.compile().findall()匹配出来的结果不一致. 很是奇怪,故此记录一下,防止以后碰到类似情况 ...

  4. Python3中正则模块re.compile、re.match及re.search函数用法详解

    Python3中正则模块re.compile.re.match及re.search函数用法 re模块 re.compile.re.match. re.search 正则匹配的时候,第一个字符是 r,表 ...

  5. Python--re模块的findall等用法

    1)正则表达式含义 . # 点可代表一切字符 \ # 起转义作用 [...] # 指代方括号中的任意字符 \d # 指代数字0-9 \D # 指代非数字 \s # 指代一切空格,包括tab制表符.空格 ...

  6. 网络爬虫re模块的findall()函数

    findall()函数匹配所有符合规律的内容,并以列表的形式返回结果. a = '"<div>指数' \ '</div>"' word = re.finda ...

  7. $python正则表达式系列(2)——re模块常用函数

    本文主要介绍正则re模块的常用函数. 1. 编译正则 import re p = re.compile(r'ab*') print '[Output]' print type(p) print p p ...

  8. Python回调函数用法实例详解

    本文实例讲述了Python回调函数用法.分享给大家供大家参考.具体分析如下: 一.百度百科上对回调函数的解释: 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函 ...

  9. python re模块findall()详解

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

随机推荐

  1. VIM 使用 匹配替换命令配合表达式 实现 递增替换

    :let n=100 | g/while/s/\d/\=n / | let n=n+1 before 10 void *thread_function_1(void *arg) { 11 int i; ...

  2. Timus - 1209 - 1, 10, 100, 1000...

    先上题目: 1209. 1, 10, 100, 1000... Time limit: 1.0 secondMemory limit: 64 MB Let's consider an infinite ...

  3. c#--早绑定晚绑定

    原文地址 早绑定early binding: 在编译的时候就已经却确定了将来程序运行基类或者派生类的哪个方法. 在编译代码的时候根据引用类型就决定了运行该引用类型中定义的方法.即基类方法. 这种方式运 ...

  4. [bzoj1195][HNOI2006]最短母串_动态规划_状压dp

    最短母串 bzoj-1195 HNOI-2006 题目大意:给一个包含n个字符串的字符集,求一个字典序最小的字符串使得字符集中所有的串都是该串的子串. 注释:$1\le n\le 12$,$1\le ...

  5. RabbitMQ发布订阅实战-实现延时重试队列

    RabbitMQ是一款使用Erlang开发的开源消息队列.本文假设读者对RabbitMQ是什么已经有了基本的了解,如果你还不知道它是什么以及可以用来做什么,建议先从官网的 RabbitMQ Tutor ...

  6. [Java]对字符串中的每一个单词个数进行统计

    这是来自一道电面的题. 单词统计非常easy想到用Map来统计,于是想到了用HashMap. 可是我却没有想到用split来切割单词,想着用遍历字符的方式来推断空格.人家面试官就说了,假设单词之间不止 ...

  7. 使用makeself创建安装文件

    Makeself.sh是一个小的Shell脚本.用于从一个文件夹中生成自解压的tar.gz压缩包. 结果文件以一个shell脚本显示(大多数以.run作为后缀名).能够自己主动执行.该文档会解压自己到 ...

  8. Linux shell脚本中shift的用法说明【转】

    本文转载自:http://blog.csdn.net/zhu_xun/article/details/24796235 Linux shell脚本中shift的用法说明 shift命令用于对参数的移动 ...

  9. 【docker】python: can't open file 'helloworld.py': [Errno 13] Permission denied

    运行容器提示权限问题 docker run  -v $PWD/myapp:/usr/src/myapp  -w /usr/src/myapp python:3.5 python helloworld. ...

  10. codeforces 712 Memory and De-Evolution

    2019-05-19 13:25:37 加油,加油,坚持,坚持!!! 一定要逆推,才可以是最少的次数 更好的方法: https://www.cnblogs.com/ECJTUACM-873284962 ...