当前位置: 首页 > 图灵资讯 > 行业资讯> Python正则表达式findall函数详解

Python正则表达式findall函数详解

发布时间:2025-09-29 11:05:31

写正则表达式的时候总会遇到很多问题, 特别是当表达式有多个元组时。让我们来看看re模块下的findall()函数遇到多个表达式元组时会出现什么样的坑。

代码如下

importre
str="abcd"
regex0=re.compile("((\w+)\s+\w+)")
print(regex0.findall(str))
regex1=re.compile("(\w+)\s+\w+")
print(regex1.findall(str))
regex2=re.compile("\w+\s+\w+")
print(regex2.findall(str))

输出结果

[('ab','a'),('cd','c')]
['a','c']
['ab','cd']

结果可能有点出乎意料。让我们解释一下

第一个正则表达式有两个括号,我们可以看到它的输出是列表 中包含2个 tuple

第二个正则表达式中有一个括号,其输出是括号匹配的内容,而不是整个表达式匹配的结果。

第三个正则表达式中没有括号,输出的内容与整个表达式相匹配。

结论:findall()返回括号匹配的结果(如regex1),多个括号返回多个括号匹配的结果(如regex),如果没有括号返回整个句子匹配的结果(如regex2)。因此,在提取数据时需要注意这个坑。

事实上,它并不是python独有的,这是真的 正则 所特有的 , 任何高级语言使用正则都符合这一特点:当有括号时,只能与括号中的内容相匹配,没有括号[相当于在最外层添加括号]。在正则中 “()” 代表分组的意思,括号代表分组,你只能匹配"()"中的内容。

相关文章

Python中lambda表达式的优缺点及使用场景

Python中lambda表达式的优缺点及使用场景

2025-09-29
详解json.dumps中文乱码问题

详解json.dumps中文乱码问题

2025-09-29
Python和单元测试那些事儿

Python和单元测试那些事儿

2025-09-29
Python正则表达式findall函数详解

Python正则表达式findall函数详解

2025-09-29
Python的高级特性:容易忽略的不可变类型

Python的高级特性:容易忽略的不可变类型

2025-09-28
一篇文章教你如何使用Python生成器

一篇文章教你如何使用Python生成器

2025-09-28