python怎么匹配字符串_python正则表达式如何匹配字符串
python正则表达式匹配字符串的方法:1、使用【(.+?)】这个正则表达式来提取单个位置的字符串;2、使用【(?P…)】这个正则表达式【匹配连续多个位置的字符串。
python正则表达式匹配字符串的方法:
一、单个位置的字符串提取
这种情况我们可以使用(.+?)这个正则表达式来提取。 举例,一个字符串"a123b",如果我们想提取ab之间的值123,可以使用findall配合正则表达式,这样会返回一个包含所以符合情况的list。
代码如下:import re
str = "a123b"
print re.findall(r"a(.+?)b",str)#
输出['123']
1.1贪婪和非贪婪匹配
如果我们有一个字符串”a123b456b”,如果我们想匹配a和最后一个b之间的所有值而非a和第一个出现的b之间的值,可以用?来控制正则贪婪和非贪婪匹配的情况。
代码如下:import re
str = "a123b456b"
print re.findall(r"a(.+?)b", str)
#输出['123']#?控制只匹配0或1个,所以只会输出和最近的b之间的匹配情况
print re.findall(r"a(.+)b", str)
#输出['123b456']
print re.findall(r"a(.*)b", str)
#输出['123b456']
1.2多行匹配
如果你要多行匹配,那么需要加上re.S和re.M标志. 加上re.S后。将会匹配换行符,默认.不会匹配换行符。
代码如下:str = "a23b\na34b"
re.findall(r"a(\d+)b.+a(\d+)b", str)
#输出[]
#因为不能处理str中间有\n换行的情况
re.findall(r"a(\d+)b.+a(\d+)b", str, re.S)
#s输出[('23', '34')]
加上re.M后,^$标志将会匹配每一行,默认^和$只会匹配第一行。
代码如下:str = "a23b\na34b"
re.findall(r"^a(\d+)b", str)
#输出['23']
re.findall(r"^a(\d+)b", str, re.M)
#输出['23', '34']
二、连续多个位置的字符串提取
这种情况我们可以使用(?P…)这个正则表达式来提取。举例,如果我们有一行webserver的access日志:'192.168.0.1 25/Oct/2012:14:46:34 "GET /api HTTP/1.1" 200 44 "http://abc.com/search" "Mozilla/5.0"',我们想提取这行日志里面所有的内容,可以写多个(?Pexpr)来提取,其中name可以更改为你为该位置字符串命名的变量,expr改成提取位置的正则即可。
代码如下:import re
line ='192.168.0.1 25/Oct/2012:14:46:34 "GET /api HTTP/1.1" 200 44 "http://abc.com/search"
"Mozilla/5.0"'
reg = re.compile('^(?P[^ ]*) (?P[^ ]*) "(?P[^"]*)"
(?P[^ ]*) (?P[^ ]*) "(?P[^"]*)" "(?P[^"]*)"')
regMatch = reg.match(line)
linebits = regMatch.groupdict()
print linebits
for k, v in linebits.items() :
print k+": "+v
输出的结果为:status: 200
referrer:
request: GET /api HTTP/1.1
user_agent: Mozilla/5.0
date: 25/Oct/2012:14:46:34size: 44
remote_ip: 192.168.0.1
python怎么匹配字符串_python正则表达式如何匹配字符串相关推荐
- linux 匹配 中文开头,中文正则表达式匹配问题之正则表达式中文匹配使用方法,...
中文正则表达式匹配问题之正则表达式中文匹配使用方法, 这篇文章主要讲如何使用正则匹配中文字符,中文正则表达式的匹配规则不像其他正则规则一样容易记住,下面一起看看这个中文正则表达式是怎么样的. \w匹配 ...
- python 正则 匹配任意字符串_python中正则匹配
写代码时候,不管是爬虫,还是获取某些特定的资源,我们需要写正则表达式. 因为不常用,有些语法生疏.有时明明觉得自己的语法可以,可就是不行. 正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之 ...
- python子串匹配_Python正则表达式如何匹配子串
Python正则表达式有很多的时候需要我们进行子串的匹配,不单在进行替换的时候需要进行,在很多的地方都会用到这些代码.下面我们就来详细的学习如何用Python正则表达式获取自己想得到的匹配子串. 获取 ...
- python贪婪匹配顺序_Python正则表达式:贪婪模式返回多个空匹配
这种模式仅意味着将字符串中的所有内容抓取到数据中第一个潜在句子边界为止: [^\.?!\r\n]* 输出: >>> pattern = re.compile(r"([^\. ...
- python模块名限定_python 正则表达式 匹配 ?的使用 限定符 sys.re模块
特殊字符:注意\b是匹配单词而非字符串的开始和结束: \w不能匹配汉字 限定符放在匹配符的后边 2 括号分组: (\d\d\d){2} #有括号匹配6位数字 \d\d\d{2} #没有括号匹配4位数字 ...
- python正则匹配特殊字符_python 正则表达式特殊字符
字符描述 \ 将下一个字符标记为一个特殊字符.或一个原义字符.或一个 向后引用.或一个八进制转义符.例如,'n' 匹配字符 "n".'\n' 匹配一个换行符.序列 '\\' 匹配 ...
- python中匹配函数_正则表达式以匹配函数名和Python中的所有参数
假设我有一个字符串,如下所示:"func(arg1, arg2, arg3, arg4, ..., argn)" 编辑:此函数不是用某种特定语言编写的.它只有这种格式.如果这样做更 ...
- python实现括号匹配代码_python实现括号匹配的思路详解
1.用一个栈[python中可以用List]就可以解决,时间和空间复杂度都是O(n) # -*- coding: utf8 -*- # 符号表 SYMBOLS = {'}': '{', ']': '[ ...
- python实现括号匹配算法_Python实现括号匹配方法详解
这篇文章主要简介了python实现括号匹配方法详解,文中通过示例代码简介的非常具体,对大家的学习或者工作具有一定的参考学习网上卖,需要的朋友可以学习下 1.用一个栈[python中可以用List]就可 ...
最新文章
- android 壁纸 裁剪,Android图片裁剪之自由裁剪
- 2019最强就业指南,看了达摩院十大科技趋势,再也不怕互联网寒冬
- 【Android RTMP】Android Camera 视频数据采集预览 ( 图像传感器方向设置 | Camera 使用流程 | 动态权限申请 )
- python与人工智能的关系_python和人工智能之间的关系是什么?老男孩Python人工智能...
- NHibernate错误集锦及配置技巧
- MySQL命令之show用法详解
- jQuery+AJAX+PHP+MySQL数据库开发搜索功能,无跳转无刷新搜索。
- 计算机科学与技术专业大学排名2020,2020计算机科学与技术专业最好大学排名:160余所大学上榜...
- linux添加Qt的fontconfig,qt – 如何在Red Hat 5.3中将fontconfig更新为更新版本?
- 自然语言处理seq2seq模型实现人工智能对对联(基于TensorFlow框架)
- 程序员须学计算机语言,新手程序员需要学什么编程语言
- 怎样恢复计算机到桌面,电脑任务栏怎么还原到下面 电脑任务栏还原方法【图文】...
- 推挽 matlab仿真,推挽电路简单介绍
- JMS createSession(false, Session.AUTO_ACKNOWLEDGE); 两个参数不同组合下的区别
- 进程与程序的区别和联系
- java ofd转pdf和jpg
- 2022年ITMC畅享杯全国职业院校电子商务技能大赛SEM直通车竞赛平台介绍思路打法
- JDK(1.6,1.7,1.8,10,11)64位解压版配置使用
- 干法读书心得:第一章 “极度”认真地工作能扭转人生
- 圣经不是一本书,而是一个图书馆,所以才这么难读