python 正则 匹配任意字符串,python正则匹配符号
如何用python正则表达式匹配字符串?
用python正则表达式匹配字符串的方法:
1.单个位置的字符串匹配
在这种情况下,我们可以使用这个(。)正则表达式来提取。例如,一个字符串 a123b ,如果我们想提取ab之间的值123,我们可以使用findall和正则表达式,这将返回一个包含所有匹配的列表,代码如下3360
进口re
str=a123b
print re.findall(ra。)b ,str)#
Output [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)
# Output [123b456]1.2多行匹配
如果要匹配多行,需要加re。s和re。m标志。加了re之后。s,将匹配换行符,默认情况下。将不匹配换行符。代码如下:3360
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,$标志将匹配每一行,默认的和$将只匹配第一行。代码如下:3360
str=a23b\na34b
re.findall(r^a(\d)海峡
#输出[23]
re.findall(r^a(\d )b ,str,re。m)
# Output [23 , 34]2。连续多个位置的字符串匹配
在这种情况下,我们可以使用(?Pname…)要提取的这个正则表达式。比如我们有一行webserver的访问日志: 192 . 168 . 0 . 1 25/oct/2012:14336046336034 get/API http/1.1 200 44 3358abc.com/Pnameexpr)要提取,其中name可以改成你为location字符串命名的变量,expr可以改成常规的提取位置。代码如下:3360
进口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 :
打印‘:’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视频教程》以上是如何用python正则表达式匹配字符串?更多详情请关注盛行IT软件开发工作室的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。