Python进阶之路 高级编程 正则表达式-使用search方法在一个字符串中查找模式、匹配多个字符串

正则表达式 使用search方法在一个字符串中查找模式

搜索是正则表达式的另一类常用的应用场景。也就是从一段文本中找到一个或多个与文本模式匹配的字符串。先从搜索一个匹配字符串开始。

在一个字符串中搜索满足文本模式的字符串需要使用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)    # 输出结果:

输出结果:

None
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)    # 输出结果:

输出结果:

Bill
Mike

你可能感兴趣的:(Python,Python进阶之路)