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

Python022

说说在 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字符串匹配的使用方法有哪些,环球青藤小编就和大家分享到这里了,学习是永无止境的,学习一项技能更是受益终身,所以,只要肯努力学,什么时候开始都不晚。如果您还想继续了解关于python编程的学习方法及素材等内容,可以点击本站其他文章学习。

* 提取字典中的【】内的字符,生成可以导入到五笔词库中的txt文件。

生成后的结果:

因为正则表达式语法很难读,因此本次程序以多次的方式来讲解。

括号中的 . 表示一个字符的通配符,可以用来表示任意字符。

 +表示字符数量,数量为一个以上

【.+】表示匹配所有括号内的字符,括号内字符至少有一个或以上。 比如【啊】或者【阿公】就会被匹配进去,而【】就不会被匹配进去

只要用()把你想要的部分框起来就可以。比如  【(匹配的字符)】 ,最后出现的就是 匹配的字符

【.+】 =》 【(.+)】

效果:

最后结果如上,红框里面有哪里不对?查看原文:

原来【阿兰若】的前括号 和 【兰若】 的 后括号 匹配了。这是因为这里使用的是贪婪模式,换句话说,

【1】【2】 匹配出来的不会是  1  2 两个字符,而是: 1】【2

我们要把它改成懒惰模式:

【(.+)】=》【(.+?)】

那个问号表示的就是懒惰模式