说说在 Python 中,如何找出所有字符串匹配

Python017

说说在 Python 中,如何找出所有字符串匹配,第1张

Regex 对象有一个 findall() 方法,它会返回包含所查找字符串的所有匹配。这与 search() 方法明显不同,search() 将返回一个 Match 对象,其中包含被查找字符串中的 “ 第一次 ” 匹配文本。请看以下示例,注意区分:

运行结果:

如果调用 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