发布于2019-08-07 14:25 阅读(616) 评论(0) 点赞(3) 收藏(4)
搜索是正则表达式的另一类常用的应用场景。也就是从一段文本中找到一个或多个与文本模式匹配的字符串。先从搜索一个匹配字符串开始。
在一个字符串中搜索满足文本模式的字符串需要使用search
方法,该方法的参数与match
方法类似。
m = re.search('abc','xabcy') # abc是文本模式字符串,xabcy是待搜索的字符串
print(m.group()) # 搜索成功,输出结果:abc
[例 11.2] 本例通过使用match
方法和search
方法对文本模式进行匹配和搜索,并对这两个方法做一个对比。
import re
# 进行文本模式匹配,匹配失败,match方法返回None
m = re.match('python','I love python.')
if m is not None:
print(m.group()) # 输出结果:None
print(m)
# 进行文本模式搜索,搜索成功
m = re.search('python','I love python.')
if m is not None:
print(m.group()) # 输出结果:python
print(m) # 输出结果:<re.Match object; span=(7, 13), match='python'>
输出结果:
None
python
<re.Match object; span=(7, 13), match='python'>
从Match对象(m变量)的输出信息可以看出,span的值是(7,13),表明满足文本模式的字符串的起始位置索引是7,结束位置的下一个字符的索引是13.从这个值可以直接截取满足条件的字符串。
在前面的例子中,只是通过search
方法搜索一个字符串,要想搜索多个字符串,如搜索bike、car和truck,最简单的方法是在文本模式字符串中使用择一匹配符号(|
)。择一匹配符号和逻辑或类似,只要满足任何一个,就算匹配成功。
s = 'bike|car|truck' # 定义使用择一匹配符号的文本模式字符串
m = re.match(s,'bike') # bike满足要求,匹配成功
print(m.group()) # 输出结果:bike
m = re.match(s,'truck') # truck满足要求,匹配成功
print(m.group()) # 输出结果:truck
从上面的代码可以看出,待匹配的字符串只要是bike、car和truck中的任何一个,就会匹配成功。
[例 11.3] 本例使用了带择一匹配符号的文本模式字符串,并通过match
方法和search
方法分别匹配和搜索指定的字符串。
import re
s = 'Bill|Mike|John' # 指定使用择一匹配符号的文本模式字符串
m = re.match(s,'Bill') # 匹配成功
if m is not None:
print(m.group()) # 输出结果:Bill
m = re.search(s,'Where is Mike?') # 搜索成功
if m is not None:
print(m.group()) # 输出结果:Mike
print(m) # 输出结果:<re.Match object; span=(9, 13), match='Mike'>
输出结果:
Bill
Mike
<re.Match object; span=(9, 13), match='Mike'>
作者:磨子舒
链接:https://www.pythonheidong.com/blog/article/11331/f24b06128614a2be557b/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!