re模块findall函数用法
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函数用法的更多相关文章
- Python3正则匹配re.split,re.finditer及re.findall函数用法详解
这篇文章主要介绍了Python3正则匹配re.split,re.finditer及re.findall函数用法,结合实例形式详细分析了正则匹配re.split,re.finditer及re.finda ...
- Python re 模块findall() 函数返回值展现方式详解
findall 函数: 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表. 注意: match 和 search 是匹配一次 findall 匹配所有,mat ...
- python re模块findall使用
今天练习re模块时候出现了一个很奇怪的问题,同样的正则表达式用re.search()与用re.compile().findall()匹配出来的结果不一致. 很是奇怪,故此记录一下,防止以后碰到类似情况 ...
- Python3中正则模块re.compile、re.match及re.search函数用法详解
Python3中正则模块re.compile.re.match及re.search函数用法 re模块 re.compile.re.match. re.search 正则匹配的时候,第一个字符是 r,表 ...
- Python--re模块的findall等用法
1)正则表达式含义 . # 点可代表一切字符 \ # 起转义作用 [...] # 指代方括号中的任意字符 \d # 指代数字0-9 \D # 指代非数字 \s # 指代一切空格,包括tab制表符.空格 ...
- 网络爬虫re模块的findall()函数
findall()函数匹配所有符合规律的内容,并以列表的形式返回结果. a = '"<div>指数' \ '</div>"' word = re.finda ...
- $python正则表达式系列(2)——re模块常用函数
本文主要介绍正则re模块的常用函数. 1. 编译正则 import re p = re.compile(r'ab*') print '[Output]' print type(p) print p p ...
- Python回调函数用法实例详解
本文实例讲述了Python回调函数用法.分享给大家供大家参考.具体分析如下: 一.百度百科上对回调函数的解释: 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函 ...
- python re模块findall()详解
今天写代码,在写到郑泽的时候遇到了一个坑,这个坑是re模块下的findall()函数. 下面我将结合代码,记录一下 import re string="abcdefg acbdgef abc ...
随机推荐
- 提高生产力:文件和IO操作(ApacheCommonsIO-汉化分享)
复制.移动.删除.比较.监控.文件读写 等文件和IO操作是编程中比较常用的功能. 幸运的是,Apache Commons IO等开源组件已经帮我们实现了. 我们可以不用重复 ...
- hdu 1568关于斐波那契数列的公式及其思维技巧
先看对数的性质,loga(b^c)=c*loga(b),loga(b*c)=loga(b)+loga(c); 假设给出一个数10234432,那么log10(10234432)=log10(1.023 ...
- dancing links 题集转自夏天的风
POJ3740 Easy Finding [精确覆盖基础题] HUST1017 Exact cover [精确覆盖基础] HDOJ3663 Power Stations [精确覆盖] Z ...
- javascript学习笔记(一)-廖雪峰教程
一. 基础 1.for in,for of和forEach 遍历的是对象的属性,因为数组也是对象,其内部的元素的索引就是其属性值.用该方式遍历数组就是获取了数组中的每一个元素的索引值(从0開始). 而 ...
- 11153 kill boss
11153 kill boss 时间限制:1000MS 内存限制:65535K提交次数:1090 通过次数:340 题型: 编程题 语言: G++;GCC Description Acmer最近 ...
- 贪吃蛇c++实现
近期没事翻了一下曾经写的程序.真是不堪入目.曾经真是什么都不懂.只是有一个程序倒是挺有意思的,大二的时候写的一个贪吃蛇游戏.尽管程序非常难看,还有非常多漏洞.但也是这个程序让我真正開始喜欢上了编程.不 ...
- [HDU 1421]搬寝室(富有新意的DP)
题目地址:pid=1421" target="_blank">http://acm.hdu.edu.cn/showproblem.php? pid=1421 题目大 ...
- [think in java]第12章 通过异常处理错误
异常处理是java中唯一正式的错误报告机制. 而且通过编译器强行运行. 异常參数 抛出异常与方法正常返回值的差别:异常返回的"地点"与普通方法调用返回的"地点" ...
- NSKeyedUnarchiver归档
把自定义的类对象编码到NSData中 NSData *data = [NSKeyedArchiver archivedDataWithRootObject:bc];//归档,bc是一个自定义的类对象, ...
- RabbitMQ(三) 集群配置
RabbitMQ--集群配置 之前不管是搞Redis.SQL.Mongo还是其他的东西,一律都没说过集群要怎么搞,电脑实在是带不动.说透彻点就是懒,懒得搭也懒得写,今日深刻意识到错误,做学问是不能懒的 ...