第二十三天学习:正则(2)

re.match(pattern, string[, flags])
这个方法将会从string(我们要匹配的字符串)的开头开始,尝试匹配pattern,一直向后匹配,如果遇到无法匹配的字符,立即返回None,如果匹配未结束已经到达string的末尾,也会返回None。两个结果均表示匹配失败,否则匹配pattern成功,同时匹配终止,不再对string向后匹配

import re

pattern = re.compile(r'hello')

result1 = re.match(pattern, 'hello')
result2 = re.match(pattern, 'hello world')
result3 = re.match(pattern, 'h hello')

print(result1.group())
print(result2)
print(result3)
结果:
hello
<_sre.SRE_Match object at 0x02459608>
None

  

re.search(pattern, string[, flags])
search方法与match方法极其类似,区别在于match()函数只检测re是不是在string的开始位置匹配,search()会扫描整个string查找匹配,match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回None。

import re
pattern = re.compile(r'hello')
result1 = re.search(pattern, 'hello')
result2 = re.search(pattern, 'hhh hello')
print(result1.group())
print(result2.group())
结果:
hello
hello

  

 

re.split(pattern, string[, maxsplit])
按照能够匹配的子串将string分割后返回列表。maxsplit用于指定最大分割次数,不指定将全部分割。
re.findall(pattern, string[, flags])
搜索string,以列表形式返回全部能匹配的子串
re.finditer(pattern, string[, flags])
搜索string,返回一个顺序访问每一个匹配结果(Match对象)的迭代器
 
实例:

import re

pattern = re.compile(r'\d+')
str1 = 'one1two2three3four4'
print(re.split(pattern, str1))
print(re.findall(pattern, str1))
print(re.finditer(pattern, str1))
for i in re.finditer(pattern, str1):
    print(i, i.group())

#结果:
['one', 'two', 'three', 'four', '']
['1', '2', '3', '4']
<callable-iterator object at 0x02446DB0>
(<_sre.SRE_Match object at 0x00529D40>, '1')
(<_sre.SRE_Match object at 0x02489608>, '2')
(<_sre.SRE_Match object at 0x00529D40>, '3')
(<_sre.SRE_Match object at 0x02489608>, '4')

  

关于match对象的常用属性和方法
Match对象是一次匹配的结果,包含了很多关于此次匹配的信息
属性:
1.string: 匹配时使用的文本。
2.re: 匹配时使用的Pattern对象。
方法:
1.group([group1, …]):
获得一个或多个分组截获的字符串;指定多个参数时将以元组形式返回。group1可以使用编号也可以使用别名;编号0代表整个匹配的子串;不填写参数时,返回group(0);没有截获字符串的组返回None;截获了多次的组返回最后一次截获的子串。
2.groups([default]):
以元组形式返回全部分组截获的字符串。相当于调用group(1,2,…last)。default表示没有截获字符串的组以这个值替代,默认为None。
3.groupdict([default]):
返回以有别名的组的别名为键、以该组截获的子串为值的字典,没有别名的组不包含在内。default含义同上。
 
import re
# 匹配如下内容:单词+空格+单词+任意字符
m = re.match(r'(\w+) (\w+)(?P<sign>.*)', 'hello world!')
 
print "m.string:", m.string
print "m.re:", m.re
print "m.group():", m.group()
print "m.group(1,2):", m.group(1, 2)
print "m.groups():", m.groups()
print "m.groupdict():", m.groupdict()

结果:
m.string: hello world!
m.re: <_sre.SRE_Pattern object at 0x00415760>
m.group(): hello world!
m.group(1,2): ('hello', 'world')
m.groups(): ('hello', 'world', '!')
m.groupdict(): {'sign': '!'}

  

同样,search方法的返回对象同样match()返回对象的方法和属性。

posted @ 2017-11-16 00:56  男孩别哭  阅读(130)  评论(0编辑  收藏  举报