运行结果:
如果调用 findall 的正则表达式不存在分组(比如上例),那么方法 findall() 将返回一个匹配字符串的列表,例如上例的 ['0591-83822032', '0591-83822033']。
如果调用 findall 的正则表达式存在分组,那么方法 findall() 将返回一个字符串元组的列表(每个分组对应一个字符串),请看下例:
运行结果:
1. re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
import re
line="this hdr-biz 123 model server 456"
pattern=r"123"
matchObj = re.match( pattern, line)
2. re.search 扫描整个字符串并返回第一个成功的匹配。
import re
line="this hdr-biz model server"
pattern=r"hdr-biz"
m = re.search(pattern, line)
3. Python 的re模块提供了re.sub用于替换字符串中的匹配项。
import re
line="this hdr-biz model args= server"
patt=r'args='
name = re.sub(patt, "", line)
4. compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。
import re
pattern = re.compile(r'\d+')
5. re.findall 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
import re
line="this hdr-biz model args= server"
patt=r'server'
pattern = re.compile(patt)
result = pattern.findall(line)
6. re.finditer 和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。
import re
it = re.finditer(r"\d+","12a32bc43jf3")
for match in it:
print (match.group() )
关于Python字符串匹配6种方法的使用,青藤小编就和您分享到这里了。如果您对python编程有浓厚的兴趣,希望这篇文章可以为您提供帮助。如果您还想了解更多关于python编程的技巧及素材等内容,可以点击本站的其他文章进行学习。
以上是小编为大家分享的关于Python字符串匹配6种方法的使用的相关内容,更多信息可以关注环球青藤分享更多干货
any函数是python的内置函数,意即只要迭代器中只要有一个值满足真,即返回True,说它是短路运算,便举这个例子,是为了告诉你,在第四行执行any函数时,函数按g列表的顺序查找真值,当找到7时,就不再继续查找,因为此时条件已经成立,于是直接返回,不再把整个迭代器执行完。于是例子用了第五行代码告诉你,迭代器此时只执行到索引值为3的地方,所以调用next函数,才会打印出索引值为4的value=8