更多课程 选择中心


Python培训

400-996-5531

Python函数字符串查找步骤


1、预编译:compile

在介绍查找和匹配函数前,首先需要知道re的compile函数,该函数可以将一个模式串编译成正则表达式类型,以便后续快速匹配和复用。

import re

pattern = re.compile(r'[a-z]{2,5}')

type(pattern) #re.Pattern

此例创建了一个正则表达式式对象(re.pattern),命名为pattern,用于匹配2-5位小写字母的模式串。后续在使用其他正则表达式函数时,即可使用pattern进行方法调用。

2、匹配:match

match函数用于从文本串的起始位置开始匹配,若匹配成功,则返回相应的匹配对象,此时可调用group()方法返回匹配结果,也可用span()方法返回匹配起止下标区间;否则返回None

import re

pattern = re.compile(r'[a-z]{2,5}')

text1 = 'this is a re test'

res = pattern.match(text1)

print(res) #<re.Match object; span=(0, 4), match='this'>

if res:

print(res.group()) #this

print(res.span()) #(0, 4)

text2 = '是的, this is a re test'

print(pattern.match(text2))#None

match函数还有一个变形函数fullmatch,当且仅当模式串与文本串刚好全部匹配时,返回一个匹配对象,否则返回None

3、搜索:search

match只提供了从文本串起始位置匹配的结果,如果想从任意位置匹配,则可调用search方法,与match方法类似,当任意位置匹配成功,则立即返回一个匹配对象,也可调用span()方法获取起止区间、调用group方法获得匹配文本串

import re

pattern = re.compile(r'\s[a-z]{2}')

text1 = 'this is a re test'

res = pattern.search(text1)

print(res) #<re.Match object; span=(4, 7), match=' is'>

if res:

print(res.group()) #is

print(res.span()) #(4, 7)

pattern2 = re.compile(r'\s[a-z]{5}')

text2 = '是的,this is a re test'

print(pattern2.search(text2))#None

match和search均用于匹配单个结果,唯一区别在于前者是从起始位置开始匹配,而后者从任意位置匹配,匹配成功则返回一个match对象。

4、全搜索:findall/finditer

几乎是最常用的正则表达式函数,用于寻找所有匹配的结果,例如在爬虫信息提取中,可非常方便地提取所有匹配字段

import re

pattern = re.compile(r'\s[a-z]{2,5}')

text1 = 'this is a re test'

res = pattern.findall(text1)

print(res) #[' is', ' re', ' test']

findall返回的是一个列表对象类型,当无匹配对象时,返回一个空列表。为了避免因同时返回大量匹配结果占用过多内存,可以调用finditer函数返回一个迭代器类型,其中每个迭代元素是一个match对象,可继续调用group和span方法获取相应结果

import re

pattern = re.compile(r'\s[a-z]{2,5}')

text1 = 'this is a re test'

res = pattern.finditer(text1)

for r in res:

print(r.group())

"""

is

re

test

"""

当匹配模式串较为简单或者仅需单词调用时,上述所有方法也可直接调用re类函数,而无需事先编译。此时各方法的第一个参数为模式串。

import re

pattern = re.compile(r'\d{2,5}')

text = 'this is re test'

re.findall('[a-z]+', text) #['this', 'is', 're', 'test']

以上就是字符串查找步骤,希望帮助到大家,达内每年输送10万+人才,18年来帮助80万学员高薪就业;协助16万家企业解决人才需求。拥有完善的就业保障体系,116万家招聘雇主合作企业。每天产生数千个招聘岗位,提供更多就业机会给到达内学员。找Python培训,选达内就对了!

版权声明:转载文章来自公开网络,版权归作者本人所有,推送文章除非无法确认,我们都会注明作者和来源。如果出处有误或侵犯到原作者权益,请与我们联系删除或授权事宜。

预约申请免费试听课

填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:我没有基础,学Python很难吗?
下一篇:Python正则表达式字符串替换/分割的方法?

如何自学Python?

说一说python中的几个基础语法

为什么Python类语法应该不同?

0基础入门Python,3 个常识点必须先了解!

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省