声明:本文乃“运维家”原创,转载请注明出处,更多内容请关注公众号“运维家”。

主旨
linux 环境python3.0+ 环境
PS:如果不知道如何在linux上安装python3.0以上的版本,在公众号“运维家”后台回复“103”,即可获取安装操作手册。
match
# 成功的匹配-示例1>>> import re>>> m = re.match('abc', 'abc')>>> if m is not None:... m.group()...'abc'>>># 成功的匹配-示例2>>> import re>>> m = re.match('abc', 'abcd')>>> if m is not None:... m.group()...'abc'>>># 失败的匹配>>> import re>>> m = re.match('abc', 'nihaobc')>>> if m is not None:... m.group()...>>>
search()的工作方式与match()完全一致,不同之处在于search()会用它的字符串参数,在任意位置对给定正则表达式模式搜索第一次出现的匹配情况。
通过下面的例子可以看出search和match之间的差异
>>> import re>>> m = re.match('abc', 'oooabcppp')>>> if m is not None:... m.group()...>>> import re>>> m = re.search('abc', 'oooabcppp')>>> if m is not None:... m.group()...'abc'>>>
从以上示例中我们可以看到,使用match的时候,是从左边第一个字符进行匹配,所以虽然我们的字符中确实包括了abc字样,但是由于不是左边第一个字符,所以没有匹配到。那么,当我们使用search的时候,他会按照从左往右的顺序,匹配在字符串中第一次出现的位置。
什么意思?你是说如果被匹配的字符串中有多个符合的内容,也只会匹配一个嘛?我们看看下面的示例就明白了。
>>> import re>>> m = re.search('abc', 'oooabcpppabcd')>>> if m is not None:... m.group()...'abc'>>>
从上面的示例中我们就知道答案了吧,确实只会匹配第一个。如果匹配到了,就结束了该次匹配。
在上一节中,我们使用正则表达式的择一匹配符,下面我们就演示下如何在python使用该方法。
# 示例1>>> ywj = 'aa|bb|cc'>>> m = re.match(ywj, 'aa')>>> if m is not None: m.group() # 可以匹配到ywj中的aa...'aa'>>># 示例2>>> ywj = 'aa|bb|cc'>>> m = re.match(ywj, 'ccnihao')>>> if m is not None: m.group() # 可以匹配到ywj中的cc...'cc'>>>示例3>>> ywj = 'aa|bb|cc'>>> m = re.search(ywj, 'My name is gcc')>>> if m is not None: m.group() # 通过search方式来匹配cc...'cc'>>>
在上一篇中我们说了点号(.)可以匹配任何字符,我们现在就用它进行匹配。
>>> ywj = '.ni'>>> m = re.match(ywj, 'aniya')>>> if m is not None: m.group()...'ani'>>>
那么是否还记得上一篇我们说的,以何种方式匹配这个点号(.)呢?
>>> ywj = 'a\.b'>>> m = re.search(ywj, 'nia.b')>>> if m is not None: m.group()...'a.b'>>>
当然是使用我们的转义符"\"了。
文章转载自运维家,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




