,,python正则表达式最详解

,,python正则表达式最详解

本文主要介绍Python中正则表达式的详细讲解。正则表达式是Python高级学习的重要组成部分。有需要的朋友可以参考一下。

:

目录

1.正则表达式-元字符1。量词2。字符匹配3。边界匹配4。第五组。匹配模式参数2。方法re.findallre.matchgroup匹配对象re.searchre.compile 3。re.sub替换字符串摘要的检索和替换

一、正则表达式元字符

Re模块使Python语言具备了所有的正则表达式函数。

1. 数量词

#提取混合大写和小写字母的单词

进口re

a='Excel 12345Word23456PPT12Lr '

r=re.findall('[a-zA-Z]{3,5} ',a)

#抽取3到5的数字

打印(r)

# ['Excel ',' Word ',' PPT']

#贪婪和非贪婪[Python默认使用贪婪模式]

#贪婪:“[a-zA-Z]{3,5}”

#非贪婪:'[a-zA-Z]{3,5}?'或者“[a-zA-Z]{3}”

#建议用后者,但不是?没有,否则你会跟下面的?数字混乱

#匹配*号0次或无限次,且*号前的字符出现0次或无限次。

进口re

a=' excel 0 excel 3 excel 3 '

r=re.findall('excel* ',a)

r=re.findall('excel。*,a)#[' excel 3 excel 3 ']

# excel没有L,有很多L可以匹配。

打印(r)

#[' excel ',' excel ',' excel']

#匹配数字一次或无限次,数字前的字符至少出现一次。

进口re

a=' excel 0 excel 3 excel 3 '

r=re.findall('excel ',a)

打印(r)

#[' excel ',' excel']

#匹配0次还是1次?没有吗?数字常用来重复。

进口re

a=' excel 0 excel 3 excel 3 '

r=re.findall('excel?a)

打印(r)

#[' excel ',' excel ',' excel']

2. 字符匹配

line='xyz,xcz.xfc.xdz,xaz,xez,xec '

r=re.findall('x[de]z ',line)

# pattern以X开头,以Z结尾,包含D或e。

打印(r)

# ['xdz ',' xez']

r=re.findall('x[^de]z'线)

# pattern以X开头,以Z结尾,而不是以D或e结尾。

打印(r)

# ['xyz ',' xcz ',' xaz']

# \w您可以提取中文、英文、数字和下划线,但不能提取特殊字符。

进口re

a=' Excel 12345 word \ n 23456 _ PPT 12 lr '

r=re.findall('\w ',a)

打印(r)

# ['E ',' x ',' c ',' E ',' l ',' 1 ',' 2 ',' 3 ',' 4 ',' d ',' 2 ',' 3 ',' 4 ',' 5 ',' 6 ',' _ ',' P ',' P ',' T ',' 1 ',' 2 ',' l ',' r']

# \W提取特殊字符、空格\n \t

进口re

a=' Excel 12345 word \ n 23456 _ PPT 12 lr '

r=re.findall('\W ',a)

打印(r)

# [' ',' \n']

3. 边界匹配

#要提取的受限电话号码的位置必须是8-11位数字。

进口re

电话='13811115888 '

r=re.findall('^\d{8,11}$',tel)

打印(r)

# ['13811115888']

4. 组

#将abc分组为一组,{2}表示重复几次以匹配abcabc。

进口re

a='abcabcabcxyzabcabcxyzabc '

R=re.findall('(abc){2} ',a) #和

# ['abc ',' abc']

打印(r)

r=re.findall('(abc){3} ',a)

# ['abc']

5. 匹配模式参数

# findall第三个参数re。我忽略大小写。

进口re

a=' abcFBIabcCIAabc '

r=re.findall('fbi ',a,re。我)

打印(r)

# ['联邦调查局']

#多个模式由|连接。

进口re

a='美国联邦调查局'

r=re.findall('fbi。“{1}”,a,re。我| re。s)

#匹配fbi,然后匹配任何字符,包括\n

打印(r)

# ['FBI\n']

二、方法

re.findall

匹配字符串中与设定值相关的所有值。

以列表形式返回。

如果不匹配,则返回一个空列表。

进口re

re.findall(模式,字符串,标志=0)

pattern.findall(string[,pos[,endpos]])

进口re

Line=' 111aaabbb222小呼噜奥利奥'

r=re.findall('[0-9]',行)

打印(r)

# ['1', '1', '1', '2', '2', '2']

re.match

Re.match尝试从字符串的开头开始匹配一个模式。

如果起始位置匹配不成功,Match()返回none。

re.match(模式,字符串,标志=0)

#(标准,待匹配,标志位)

打印(重新匹配(' www ',' www.xxxx.com '))

print(re.match('www ',' www.xxxx.com ')。span())

打印(重新匹配(' com ',' www.xxxx.com '))

关于。匹配对象;span=(0,3),match='www '

(0, 3)

没有人

group匹配对象

进口re

a='人生苦短,我用python,我爱python '

r=re.search('life(。*)python(。*)python ',a)

Print(r.group(0)) #完全正则匹配,人生苦短,我用Python,我爱Python

Print(r.group(1)) #第一个数据包之间的值很短,我使用

print(r.group(2)) #第2个分组之间的取值,我爱

print(r.group(0,1,2)).以元组形式返回3个结果取值('人生短暂,我用python,我爱python ','短暂,我用',',我爱)

print(r.groups()) #返回就是组(1)和组(2)('短,我用',',我爱)

进口关于

# .* 表示任意匹配除换行符(\n、\r)之外的任何单个或多个字符

# (.*?)表示'非贪婪'模式,只保存第一个匹配到的子串

#回复M多行匹配,影响^ 和$

#回复。我使匹配对大小写不敏感

"猫比狗聪明"

match obj 1=re . match(r '(r .*)是(。*?) .*,行,环M|re .我)

match obj 2=re . match(r '(r .*)更聪明(。*?) .*,行,环M|re .我)

match obj 3=re . match(r '(r .*)比(。*)',行,回复.M|re .我)

打印(matchObj1)

打印(matchObj2)

打印(matchObj3)

#回复。匹配对象;span=(0,26),match='猫比狗聪明'

#回复。匹配对象;span=(0,26),match='猫比狗聪明'

#无

如果matchObj1:

print ('matchObj1.group():',matchObj1.group())

print ('matchObj1.group(1):',matchObj1.group(1))

print ('matchObj1.group(2):',matchObj1.group(2))

否则:

打印('不匹配!')

如果matchObj2:

print ('matchObj2.group():',matchObj2.group())

print ('matchObj2.group(1):',matchObj2.group(1))

print ('matchObj2.group(2):',matchObj2.group(2))

否则:

打印('不匹配!')

如果matchObj3:

print ('matchObj3.group():',matchObj3.group())

print ('matchObj3.group(1):',matchObj3.group(1))

print ('matchObj3.group(2):',matchObj3.group(2))

否则:

打印('不匹配!')

# matchObj1.group():猫比狗聪明

# matchObj1.group(1):猫

# matchObj1.group(2):更聪明

# matchObj2.group():猫比狗聪明

# matchObj2.group(1):猫是

# matchObj2.group(2) : than

# matchObj3.group():猫比狗聪明

# matchObj3.group(1):猫更聪明

# matchObj3.group(2):狗

进口关于

# 点是匹配单个字符

# 星是前面的东西出现0次或无数次

# 点星就是任意字符出现0次或无数次

str='a b a b '

matchObj1=re.match(r'a .*)b ',str,re .M|re .我)

matchObj2=re.match(r'a .*?)b ',str,re .M|re .我)

print('matchObj1.group():',matchObj1.group())

print('matchObj2.group():',matchObj2.group())

# matchObj1.group() : a b a b

# matchObj2.group() : a b

re.search

扫描整个字符串并返回第一个成功的匹配。

重新搜索(模式,字符串,标志=0)

进口关于

"猫比狗聪明"

matchObj=re.match(r'dogs ',line,re .M|re .我)

matchObj1=re.search(r'dogs ',line,re .M|re .我)

match obj 2=re . match(r '(r .*)狗,线,环M|re .我)

if matchObj:

print ('match - matchObj.group():',matchObj.group())

否则:

打印('不匹配!')

如果matchObj1:

print ('match - matchObj1.group():',matchObj1.group())

否则:

打印('不匹配!')

如果matchObj2:

print ('match - matchObj2.group():',matchObj2.group())

否则:

打印('不匹配!')

#不匹配!

# match - matchObj1.group() : dogs

# match - matchObj2.group():猫比狗聪明

re.compile

重新编译是将正则表达式转换为模式对象

这样可以更有效率匹配。使用编制转换一次之后,以后每次使用模式时就不用进行转换

三、检索和替换

re.sub 替换字符串

re.sub('被替换的','替换成的,a)

# 把联邦调查局替换成烧烤

进口关于

a=' abcFBIabcCIAabc '

r=re sub(' FBI ',' BBQ ',a)

打印(r)

# 把联邦调查局替换成烧烤,第四参数写1,证明只替换第一次,默认是0(无限替换)

进口关于

a=' abcFBIabcFBIaFBICIAabc '

r=re sub(' FBI ',' BBQ ',a,1)

打印(r)

# abcBBQabcCIAabc

# abcBBQabcFBIaFBICIAabc

# 把函数当参数传到潜水艇的列表里,实现把业务交给函数去处理,例如将联邦调查局替换成联邦调查局美元

进口关于

a=' abcFBIabcFBIaFBICIAabc '

极好的函数名(形参):

分段获取=形参group() # group()在正则表达式中用于获取分段截获的字符串,获取到联邦调查局

返回' $ '分段获取'$'

r=re sub(' FBI '),函数名,a)

打印(r)

总结

本文到此为止。希望能帮到你,也希望你能多关注我们的更多内容!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • python查找文件指定内容,python正则匹配文件内容
  • python查找文件指定内容,python正则匹配文件内容,python 文件查找及内容匹配方法
  • python re匹配规则,py正则表达式re应用举例,python正则-re的用法详解
  • Python正则匹配数字,python正则表达式匹配整数
  • 正则匹配整数或者浮点数,python正则表达式匹配浮点数
  • python正则表达式菜鸟教程,python正则表达式re.match
  • Python3 正则表达式,python正则表达式sub替换字符串
  • python正则表达式匹配换行符,python正则表达式匹配换行
  • python正则 非贪婪,正则表达式中表达非贪婪匹配
  • python 正则 替换,python正则化替换
  • python 字符串正则替换,python正则表达式匹配任意字符
  • python正则表达式匹配开头与结尾,菜鸟教程 python 正则表达式
  • python精确匹配字符串,python正则查找所有匹配的字符串
  • python正则表达式提取字符串,python 正则表达式元字符
  • python的正则表达式基础视频讲解,Python正则表达式的实训报告
  • 留言与评论(共有 条评论)
       
    验证码: