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

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

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

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

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

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

2. findall

import re

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

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

3. findall

import re

s = "456123sad  789111re3dfheasdf  a123fas  123awef  q3segd  a123dsas "
# s = "adfad asdfasdf asdfas asdfawef asd adsfas "
re0subject3 = re.compile('((\w+)\s+\w+)')
print(re0subject3.findall(s))
> 执行结果:
[('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. Q&A to prepare interview of HSBC

    1.How do you keep updating lastest IT knowledge? 1).keep an eye on current project technology evetho ...

  2. 阿里云 全部端口port

  3. (转载)关于初学者上传文件到github的方法

    说来也惭愧,我是最近开始用github,小白一个,昨天研究了一个下午.终于可以上传了,所以今天写点,一来分享是自己的一些经验,二来也是做个记录,万一哪天又不记得了:) 废话不多说,直接来,这次主要介绍 ...

  4. Java 集合之Collection 接口和遍历方法

    这几篇是我按网上的教程来实习的. URL: http://www.cnblogs.com/jbelial/archive/2013/03/27/2981395.html 打代码的感觉挻好的.. 注意在 ...

  5. HDU 3662

    求的是凸包有多少个面. 注意,求的是面.这就需要把同一个面的三角形合并.只需判断两个三角形的法向量是否同向平行. /* 增量法求凸包.选取一个四面体,同时把它各面的方向向量向外,增加一个点时,若该点与 ...

  6. POJ 1673

    可以证明O是三角形ABC的垂心. 作图辅助线,一个很重要的技巧是延长中线等中线. 可以证明三角形DNA全等于ABC.然后通过角度变换容易证明AQ垂直于BC. #include <iostream ...

  7. 某P2P开发商ERP系统核心业务介绍

       之前说到.某软件公司卖P2P系统的后台管理系统.号称"ERP",今天继续说说这个ERP的核心业务.      业务1:贷款审批流程       贷款审批.主要是针对线下人员的 ...

  8. 【cl】maven新建web项目

    我的环境:window32位 +jdk1.7.0_75+maven3.3.3 1.ctrl+N 新建maven project项目 2.选择maven-archetype-webapp [这里一开始用 ...

  9. Spring——概览

    Spring是什么? Spring是帮助开发者简化开发工作的工具. Spring的出现就是为了简化人们的复杂的开发.能够在不论什么Java应用中使用,使用了主要的JavaBean取代EJB. Spri ...

  10. 【BZOJ】2140 稳定婚姻

    [解析]Hash,离散化.Tarjan [分析] 对于每一个名字.首先离散化成编号. 用hash或者其它,反正不要最主要的即可了.否则O(N^2L)会爆掉. 然后请參考:http://www.cnbl ...