python re匹配规则,py正则表达式re应用举例

python re匹配规则,py正则表达式re应用举例,python正则-re的用法详解

本文主要详细介绍了python Regularity -re的用法,并提到了Regularity中的修饰符及其功能。有需要的可以参考一下。

早上刷题的时候用的是规律,在使用的过程中感觉有点不太熟练。很久没用规律了,也忘了。所以现在,让我们回顾一下python中常规模块re的用法。

今天是复习,就不介绍一些基本概念了。让我们先来看看正则化中的修改器及其功能:

修饰符

关于。I使匹配不区分大小写。

关于。l进行本地化识别和匹配

关于。m多行匹配,影响和美元

关于。美国品牌。匹配所有字符,包括换行符。

关于。u根据Unicode字符集分析字符。此标志影响\w \W \b \B

关于。x这个标志给你一个更灵活的格式,这样你就可以编写更容易理解的正则表达式。

模式

匹配字符串的开头

$匹配字符串的结尾。用字符匹配人,除了换行符。当re。标记,则可以匹配包括换行符在内的任何字符。

[.]用来表示一组字符,单独列出:[amk]匹配a,m或k。

[.]字符不在[]: [amk]匹配amk以外的字符。

Re *匹配0个或多个表达式

匹配re 1或更多的表达式

re?匹配前面正则表达式定义的0或1段,不贪心。

Re {n}精确匹配前n个表达式。

Re {n,}匹配多于或等于n个前面的表达式

Re {n,m}以贪婪的方式匹配由n到m个先前表达式定义的段

A | b匹配a或b。

(重新)分组正则表达式并记住匹配的文本。

?(?Imx)正则表达式包含三个可选标志imx,它们只影响括号中的区域。

?(?-imx)正则表达式关闭imx可选标志,仅影响括号中的区域。

?(?re)类似于(.)但不代表一个团体

?(?Imx:re)在括号中使用Imx可选标志。

?(?-imx:re)而不是在括号中使用imx可选标志

?(?# .)评论

?(?=re)正向正分隔符。如果包含的正则表达式由.在当前位置匹配成功则成功,否则失败。但是一旦尝试了包含的表达式,匹配引擎根本没有改进,模式的其余部分必须尝试分隔符的右侧。

?(?Re)正向否定定义者。与肯定定义者相反;当包含的表达式在字符串的当前位置无法成功匹配时,它会成功匹配。

?(?Re)独立模式匹配,省去了回朔的必要。

\ w匹配字符、数字和下划线。

\ w匹配非字母数字下划线

\ s匹配任何空白字符,相当于[\t\n\r\f]

\ s匹配任何非空白字符。

\ d匹配任何数字。

\ d匹配任何非数字。

\匹配字符串开始。

\ Z匹配字符串的结尾。如果有换行符,它只匹配换行符之前的结束字符串。

\ z匹配字符串的结尾

\ g匹配上一次匹配完成的位置。

\ b匹配单词边界,即单词和空格之间的位置。

\ b匹配非单词边界

\ n \匹配换行符和制表符。

\ 1 .\ 9匹配第n个数据包的内容。

以上是我们会用到的一些模式,大部分要背下来。

接下来我们看re的一些方法:

重新编译

这个方法会生成一个正则对象,它的第一个参数是正则字符串,第二个参数是修饰符,也就是re。我想。s等等。

生成的正则对象呢?它也有一些方法,比如match,findall,finditer,search等。请往下看这些方法的用法。

重新匹配

match方法是从给定字符串的开头开始匹配,并且只匹配一次。也就是说,如果字符串与常规首字母不匹配,则匹配失败。

ta的参数有pettern、string和flags。

pettern是一个常规字符串。如果通过常规对象调用。由re.compile方法生成的匹配,则不需要此参数,因为常规对象本身表示常规匹配模式。

String是要匹配的目标字符串。

flags是一个常规修饰符,例如re。我

如果匹配失败并返回None,匹配惩罚将返回一个match对象。

匹配的方法有一些,常用的有:span、group、groups等。

由span方法返回的二进制组,分别表示目标字符串中匹配字符串的起始下标和结束下标。

group函数有一个int参数,参数0表示返回正则匹配字符串,参数1表示返回正则模式的第一组内容,参数2表示以此类推返回第二组内容。

组函数是由所有组函数的结果形成的元组。

re.search

Search函数和match函数类似,不同的是match方法只在目标函数的开头匹配一次;搜索函数是对整个目标函数进行一次匹配,一次匹配成功后就不再匹配。

同样,search方法返回一个match对象,其使用方式与match方法返回的结果相同。

re.split

Split函数是一个用来拆分字符串的函数。它的作用是根据匹配的字符串对目标字符串进行分段,返回的结果是一个列表。

需要注意的是,如果正则化中有分组,那么分组中的字符也会保留在结果列表中,而不在分组中的字符则不会保留在结果列表中。你什么意思?通过一个例子来看看:

' www.baidu.com www.taobao.com '

result=re.split('bai(du)',st)

打印(结果)

结果:

['www . ','嘟','。' com www.taobao.com']

如您所见,字符串' du '用括号括起来,所以结果中也有元素' du ',而' bai '没有用括号括起来,所以结果中不会有元素' bai '。

re.findall

这个函数是我在爬虫项目中使用最多的一个。它可以以列表的形式返回所有匹配的结果,而不是像match和search那样只匹配一个结果。让我们试一试:

' www.baidu.com www.taobao.com '

result=re.findall(r'www\(\w*)\。(com)',st)

打印(结果)

[('百度',' com '),('淘宝',' com')]

重新发现

该函数与findall的功能相同。不同的是,这个函数返回的结果是一个生成器,生成器中的每一项都是一个match对象。让我们来看看:

' www.baidu.com www.taobao.com '

result=re.finditer(r'www\。(\w*)\。(com)',st)

打印(结果。__下一个_ _()。group(0,1,2))

打印(下一个(结果)。团体(2))

(' www.baidu.com ','百度',' com ')

(“淘宝”,“com”)

回复

这个函数用于替换字符串。可以用指定的字符串替换匹配的字符串。让我们来看看:

ST=' www . 222 . com '

result=re.sub(r'\d ',' OK ',st)

打印(结果)

结果:

www。OK.com www。OK.com

我们的第二个参数可以是给定字符串之外的函数:

定义采取(匹配):

value=matched.group()

返回字符串(int(value)*2)

ST=' www . 222 . com '

result=re sub(r ' \ d ',toOK,st)

打印(结果)

结果:

www.222.comwww.444.com

总结

以上是边肖介绍的python regular -re用法的详细说明。希望对你有帮助。如果您有任何问题,请给我留言,边肖将及时回复您。非常感谢您对我们网站的支持!

如果你觉得这篇文章对你有帮助,请转载,请注明出处,谢谢!

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

留言与评论(共有 条评论)
   
验证码: