首页 > 编程知识 正文

正则匹配满足条件的第一个(正则系列2: re.search用法)

时间:2023-05-06 13:57:53 阅读:122213 作者:4928

re.search re.search扫描整个字符串并返回第一个成功的匹配项。

这个方法有三个参数,第一个是你写的正则表达式,第二个是匹配的目标字符串,第三个是匹配模式re.search(pattern, string, flags=0)

我们先来看看re.match的例子。 然后与search进行比较。 # hello 1234567获取world _ thisisaregexdemo的部分importrec ontent=' extrastingshello 1234567 world _ thisisaregexdemoextrastings ' Demo ',content (打印(结果)结果:

诺诺

发现match的输出结果为None,即pattern的开头与content字符串的开头不一致。 整体匹配失败。

接下来看看re.search。 代码不变。 re.match只是变成re.search。 看看结果吧。 导入内容=' extrastingshello 1234567 world _ thisisaregexdemoextra (d ).*? Demo ',content (打印) result (打印) result.group(1) )的结果:

_sre.SRE_Match object; span=(13,53 ),match=‘hello 1234567 world _ thisisaregexdemo’

1234567

也就是说,在pattern中搜索时,它以字符串Extra开始。 在match中,正则表达式不能从Hello开始,但在re.search中搜索。 不会管理开头匹配不一致。

总结:为了便于匹配,只要使用搜索就不用match。 用match方法限定匹配时,头部必须是一致的匹配演练。 最后做一下匹配演习吧。 实战中importr ehtml=' ' divid=' songs-list ' H2 class=' title '经典老歌/h2 p class='introduction '经典老歌列表/pulid=' list ' class=' list-group ' lidata-view='2'中途有你/Lili data-view='7' a href='/2.MP3 ' singing 3.MP3'singer='齐秦'往事风驰电掣/a/LiLidata-view='6'ahref='/(6) ahref ) ) ) 652 Lili data-view=6.MP3'singer div ' ' '上面是html代码,要求与第三个li标记中的齐秦 往事随风相匹配。 代码如下。

result=re.search(Li.*? 活动. *? singer='(.*? () ).*? (/a ),html,re.S ) ) re.S确保与换行符if result : print (result.group (2),result.group ) )的结果匹配。

齐秦往事随风而去

另外,第二个li标签的内容任贤齐 沧海一声笑

result=re.search(Li.*? singer='(.*? () ).*? (/a )、html、re.S ) if result :打印) result.group(2(1)、result.group ) )结果:

任贤齐沧海一声笑

如果匹配时不需要匹配换行符,则参数不必具有re.S,如匹配第四个和第五个li标签的歌手和歌曲名称。 但是,re.search也只是返回匹配的结果。 如果要返回所有匹配的结果,请使用re.findall。 本节的re.search说到这里了。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。