本文主要详细介绍了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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。