python 正则 匹配任意字符串,python正则匹配符号
Python正则表达式匹配字符串:1。使用[(。]这个正则表达式提取单个位置的字符串;2.使用[(?P…)]这个正则表达式[匹配一串连续的位置。
相关免费学习推荐:python视频教程
python正则表达式匹配字符串的方法:
一、单个位置的字符串提取
在这种情况下,我们可以使用(。)这个正则表达式来提取。比如一个字符串 a123b ,如果我们想提取ab之间的值123,可以用findall搭配正则表达式,这样会返回一个包含所有匹配的列表。
代码如下:
进口re
str=a123b
print re.findall(ra。)b ,str)#
输出[ 123 ]1.1贪婪和非贪婪匹配
如果我们有一个字符串“a123b456b”,如果我们想匹配A和最后一个B之间的所有值,而不是A和第一个出现的B之间的值,可以用吗?控制常规贪婪和非贪婪匹配的情况。
代码如下:
进口re
str=a123b456b
print re.findall(ra。)b ,str)
# Output [123]#?控件只匹配0或1,因此只输出最接近的B之间的匹配。
print re.findall(ra。)b ,str)
# Output [123b456]
print re.findall(ra。*)b ,str)
#输出[ 123 b456 ]1.2多行匹配
如果你想匹配多行,那么你需要添加re。s和re。m马克。添加重复字符后,将匹配换行符,默认。将不匹配换行符。
代码如下:
str=a23b\na34b
re.findall(ra(\d )b. a(\d )b ,str)
#输出[]
#因为您无法处理str中间的\n断行情况
re.findall(ra(\d )b. a(\d )b ,str,re。s)
#s带有re的输出[(23 , 34)]m,$标志将匹配每一行,默认的和$将只匹配第一行。
代码如下:
str=a23b\na34b
re.findall(r^a(\d)海峡
#输出[23]
re.findall(r^a(\d )b ,str,re。m)
# Output [23 , 34 ]二、连续多个位置的字符串提取
在这种情况下,我们可以使用(?Pname…)要提取的这个正则表达式。例如,如果我们有一个webserver的访问日志: 192 . 168 . 0 . 1 25/Oct/2012:14336046336034 get/API http/1.1 20044 3358abc.com/search Mozilla/5.0 pname expr)要提取,其中名称可以改为您为位置字符串命名的变量,expr可以改为常规提取位置。
代码如下:
进口re
line= 192 . 168 . 0 . 1 25/Oct/2012:143:46:34 GET/API HTTP/1.1 200 44 http://ABC.com/search
Mozilla/5.0
re.compile(^(?Premote_ip[^ ]*)(?pdate[^]*)’(?Prequest[^]*)
(?Pstatus[^ ]*)(?psize[^]*)’(?Preferrer[^]*)的(?Puser_agent[^]*))
regMatch=reg.match(line)
linebits=regMatch.groupdict()
打印行位
对于linebits.items()中的k,v :
print : v输出的结果是:
状态: 200
推荐人:
请求:获取/api HTTP/1.1
user_agent: Mozilla/5.0
日期: 2012年10月25日33:14:463:34尺寸: 44
Remote_ip: 192.168.0.1以上是python正则表达式如何匹配字符串的细节。更多信息请关注盛行IT软件开发工作室的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。