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]+ 匹配 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)
(?=…)匹配条件是如果…出现在之后的位置,⽽不使⽤输⼊字符串;称作正向前视断⾔(?=)
(?!…)匹配条件是如果…不出现在之后的位置,⽽不使⽤输⼊字符串;称作负向前视断⾔(?!)
(?<=…)匹配条件是如果…出现在之前的位置,⽽不使⽤输⼊字符串;称作正向后视断⾔(?<=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 = repile('\w+\s+')
print(re0subject1.findall(s))
> 执⾏结果:
['456123sad ', '789re3dfheasdf ', 'a123fas ', '123awef ', 'q3segd ']
当给出的正则表达式中不带括号时,列表的元素为字符串,此字符串为整个正则表达式匹配的内容。
注意:此处出现的匹配是\w+\s+,最后⼀个字符串没有空格字符,所以没有匹配。
# findall
import re
s = "456123sad  789re3dfheasdf  a123fas  123awef  q3segd  a123dsas "
re0subject2 = repile('\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 = repile('(\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 = repile('((\w+)\s+\w+)')
print(re0subject3.findall(s))
> 执⾏结果:李泉个人资料
[('456123sad  789111re3dfheasdf', '456123sad'), ('a123fas  123awef', 'a123fas'), ('q3segd  a123dsas', 'q3segd')]
当给出的正则表达式中带有多个括号时,列表的元素为多个字符串组成的元组,元组中字符串个数与括号对数相同,字符串内容与每个括号内的正则表达式相对应,并且排放顺序是按括号出现的顺序。
转载于:wwwblogs/gunxiaoshi/p/11052874.html