re模块findall函数用法
2024-10-01 08:51:23
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')]
当给出的正则表达式中带有多个括号时,列表的元素为多个字符串组成的元组,元组中字符串个数与括号对数相同,字符串内容与每个括号内的正则表达式相对应,并且排放顺序是按括号出现的顺序。
最新文章
- word转化jpg
- Web报表工具JS开发之日期校验
- Python爬虫学习
- YUM仓库服务
- php 如何造一个简短原始的数据库类用来增加工作效率
- 教你看懂GERBER中的钻孔(.txt)文件
- [精品推荐]Android Studio插件整理
- Java Garbage Collection/垃圾收集 策略查看
- nova分析(2)—— nova-all
- linux定时器用法
- 同时连接多台Android设备进行Monkey Test
- javascript无缝全屏轮播
- PAT (Advanced Level) 1101. Quick Sort (25)
- OutOfMemoryError内存不足
- 洛谷P2900 [USACO08MAR]土地征用Land Acquisition(动态规划,斜率优化,决策单调性,线性规划,单调队列)
- vector向量容器(常用的使用方法总结)
- AndroidManifest详解
- 用户态监控网络接口up、down事件
- Django入门指南-第7章:模板引擎设置(完结)
- 与数据库连接的页面增删改查 的easyui实现(主要是前端实现)
热门文章
- Codeforces 851B/C
- poj 3177&;&;poj 3352加边构双联通(有重边)用tarjan 模板求的
- [jQuery]data-不能乱用啊
- 【日常学习】【搜索/递归】codevs2802 二的幂次方题解
- HDU 4528
- Java异常的处理机制(二)
- 【MongoDB】windows平台搭建Mongo数据库复制集(相似集群)(三)
- 实战c++中的vector系列--vector应用之STL的find、find_if、find_end、find_first_of、find_if_not(C++11)
- Android开发之BUG专讲:入门篇(一)
- 在Android系统中修改Android.mk使其同时编译rgb2565和rgb2888(向out/host/linux-x86/bin/下新增加一个工具命令)【转】