python高效匹配函数,python字符串匹配函数

python中re库的常见用法

. 匹配除换行符外的任意字符

专业成都网站建设公司,做排名好的好网站,排在同行前面,为您带来客户和效益!创新互联为您提供成都网站建设,五站合一网站设计制作,服务好的网站设计公司,成都网站设计、成都做网站、外贸网站建设负责任的成都网站制作公司!

\d 匹配数字

\D 匹配非数字

\w 匹配数字字母下划线,支持中文

\W 小写w的反集

[abc] 匹配abc中任意一个

[a-f] 匹配字母a到f中的任意一个

x|y 匹配x或者y

^ 匹配字符串的开头

$ 匹配字符串的结尾

{3,5} 匹配次数,最少3个,最多5个

{3,} 至少匹配3次

* 匹配前一个字符,0次或多次

+ 匹配前一个字符,1次或多次

? 当前面不是数量表达式时,代表匹配0次或1次

举个栗子:

findall()函数的作用是匹配所有符合条件字符串,并以列表形式返回

由于.是匹配除换行符外的所有字符,{3,5} 匹配次数,最少3个,最多5个,在默认的贪婪模式下会匹配最多的字符,所以在列表中,字母a开头的字符串后面都跟了5个字符。

可以看到在非贪婪模式下,列表中的每一项都匹配最少的字符数。

从前往后,匹配到符合条件的最短的每一个字符串

边界字符:

^ 限定开头

$ 限定结尾

匹配分组:

() 提取出来的只有括号里匹配到的部分

上文中已经用到这个方法了,返回匹配到的字符串列表,如果没有匹配到的内容,则返回空列表。

flags参数是可以省略的,不省略时代表具有其他特殊的功能,如忽略大小写,忽略换行符等,re.S代表匹配时忽略换行符

re.search()和re.findall()的参数是一样的,只是返回结果不同,如果匹配到了,就返回该结果的正则表达式对象;如果没有匹配到,则返回None

使用re.search()返回匹配到的第一个字符串的正则表达式对象,找到了就会停止匹配。因此这个函数比较适合在一个大文本中找第一个出现的字符串。

若想让这个字符串展示出来,还需要借助group()函数。

举个栗子:

这个函数的作用是将正则表达式编译为一个正则表达式对象,如果要多次使用这个正则表达式的话,可以先编译,然后复用,使程序更高效一些,对这个对象继续使用.match(string)就可以显示匹配到的正则表达式对象,后续如果想要获取具体内容的话,和上面是一眼国的,直接使用group(0)就可以啦。

如果不考虑复用的话,和re.mach(pattern, string)的效果是一样的。

从运行结果也可以看出,re.match()和re.search()的区别,虽然二者都会返回匹配到的正则表达式对象,但是re.match()是从字符串的最开始位置开始匹配的,如果最开始的字符不匹配则会直接返回None;而re.search()则会一直往后找,直到找到第一个符合条件的字符串。

re.sub()函数用于替换字符串中的匹配项

举个栗子:

将所有数字替换为了一个空格。

Python 高阶函数的使用

1. Python有哪些高阶函数,功能分别是什么

Python有三大高阶函数,分别是 map 、 reduce 、 filter 函数。

2. map高阶函数

map函数有两个参数,第一个参数要求传递一个函数对象,第二个参数要求传递一个可迭代序列。直接看案例

运行结果:

3. reduce高阶函数

reduce高阶函数位于functools模块中,使用前需要先进行导入。reduce高阶函数可以有三个参数,第一个参数要求传递一个函数对象(必传),第二个参数要求传递一个可迭代序列(必传),第三个函数是一个初始值(不必传,可以有默认值)。直接看案例

运行结果:

4. filter高阶函数

filter高阶函数有两个参数,第一个参数是一个函数对象,第二个参数是一个可迭代序列。直接看案例

运行结果:

python正则表达式函数match和search的区别详解

match()函数只检测RE是不是在string的开始位置匹配, search()会扫描整个string查找匹配, 也就是说match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回none

例如:

#! /usr/bin/env python

# -*- coding=utf-8 -*-

import re

text = 'pythontab'

m = re.match(r"\w+", text)

if m:

print m.group(0)

else:

print 'not match'

结果是:pythontab

而:

#! /usr/bin/env python

# -*- coding=utf-8 -*-

#

import re

text = '@pythontab'

m = re.match(r"\w+", text)

if m:

print m.group(0)

else:

print 'not match'

结果是:not match

search()会扫描整个字符串并返回第一个成功的匹配

例如:

#! /usr/bin/env python

# -*- coding=utf-8 -*-

#

import re

text = 'pythontab'

m = re.search(r"\w+", text)

if m:

print m.group(0)

else:

print 'not match'

结果是:pythontab

那这样呢:

#! /usr/bin/env python

# -*- coding=utf-8 -*-

#

import re

text = '@pythontab'

m = re.search(r"\w+", text)

if m:

print m.group(0)

else:

print 'not match'

结果是:pythontab

Python字符串匹配6种方法的使用

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种方法的使用的相关内容,更多信息可以关注环球青藤分享更多干货


分享题目:python高效匹配函数,python字符串匹配函数
标题URL:http://azwzsj.com/article/hchgpd.html