python正则表达式 re (二)match与search

时间:2022-01-16 22:39:10

re正则表达式模块还包括一些有用的操作正则表达式的函数。下面主要介绍match函数以及search函数。
定义: re.match 尝试从字符串的开始匹配一个模式。

原型:
re.match(pattern, string, flags)

第一个参数是正则表达式,如果匹配成功,则返回一个Match,否则返回一个None;
第二个参数表示要匹配的字符串;
第三个参数是标致位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

函数的返回值为真或者假。
例如:match(‘p’,’python’)返回值为真;match(‘p’,’www.python.org’)返回值为假。

定义:re.search会在给定字符串中寻找第一个匹配给定正则表达式的子字符串。

函数的返回值:如果查找到则返回查找到的值,否则返回为None。

原型:
re.search(pattern, string, flags)

每个参数的含意与re.match一样。

例子:

import re
content='Where are you from? You look so hansome.'
regex=re.compile(r'\w*som\w*')
m=regex.search(content)
if m:
print m.group(0)
else:
print "Not found"

解析:content为正则表达式要查找的字符串
re.compile()函数为正则表达式创建模式对象。
m接收对内容content字符串进行regex正则表达式实现search函数的结果
如果m不为空,则使用m.group(index)输出查找到的子字符串
否则(返回值为None) print “Not found”

match与search函数相似,如果查找到结果, 将返回一个 MatchObject,你可以查询 MatchObject 关于匹配字符串的相关信息了。MatchObject 实例也有几个方法和属性;最重要的那些如下所示:


group() 返回被 RE 匹配的字符串
start() 返回匹配开始的位置
end() 返回匹配结束的位置
span() 返回一个元组包含匹配 (开始,结束) 的位置

>import re
>n=re.compile(r'\w+')
>h=n.match("winter comes") #这里作用同h=re.match(r'\w+',"winter comes")
>print h.group()
winter
>print h.start()
0
>print h.end()
6
>print h.span()
(0,6)

如果在match函数中使用()子模式的输出与上面情况稍有不同,举例说明:
例子1:

import re
m=re.match(r'www\.(.*)\..{3}','www.python.org')
print m.group() #效果同m.group(0)
#'www.python.org'
print m.group(1)
#'python'

例子2:

import re
m=re.match(r'(www\.(.*)\..{3})','www.python.org')
print m.group(0) #效果与print m.group(1)相同 输出()的内容 为第一层括号
#www.python.org
print m.group(2) #输出第二层括号的内容 即(.*)的内容
#python
print m.group(3) #出错
#程序出现异常

例子3:

import re
m=re.match(r'(www\.(.*)\..{3})','www.python.org')
print m.group(0) #效果与print m.group(1)相同 输出()的内容 为第一层括号
#www.python.org
print m.group(2)
#python
print m.group(3)
#org