matlab中findall函数,re模块findall函数用法

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 标识而不是数字 ID 标识的正则分组匹配

(?P)

(?P=name)

在同一字符串中匹配由(?P

(?P=data)

(?#…)

表示注释,所有内容都被忽略

(?#comment)

(?=…)

匹配条件是如果…出现在之后的位置,而不使用输入字符串;称作正向前视断言

(?=.com)

(?!…)

匹配条件是如果…不出现在之后的位置,而不使用输入字符串;称作负向前视断言

(?!.net)

(?<=…)

匹配条件是如果…出现在之前的位置,而不使用输入字符串;称作正向后视断言

(?<=800-)

(?

匹配条件是如果…不出现在之前的位置,而不使用输入字符串;称作负向后视断言

(?

使用到的特殊字符

表 示 法

描述

正则表达式示例

特殊字符

\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')]

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值