问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Python正则表达式的几种匹配方法

发布网友 发布时间:2022-04-05 23:31

我来回答

2个回答

懂视网 时间:2022-04-06 03:52

python正则表达式匹配字符串的方法:1、使用【(.+?)】这个正则表达式来提取单个位置的字符串;2、使用【(?P…)】这个正则表达式【匹配连续多个位置的字符串。

相关免费学习推荐:python视频教程

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
a34b"
 
re.findall(r"a(d+)b.+a(d+)b", str)
#输出[]
#因为不能处理str中间有
换行的情况
 
re.findall(r"a(d+)b.+a(d+)b", str, re.S)
#s输出[('23', '34')]

加上re.M后,^$标志将会匹配每一行,默认^和$只会匹配第一行。

代码如下:

str = "a23b
a34b"
 
re.findall(r"^a(d+)b", str)
#输出['23']
 
re.findall(r"^a(d+)b", str, re.M)
#输出['23', '34']

二、连续多个位置的字符串提取

这种情况我们可以使用(?P<name>…)这个正则表达式来提取。举例,如果我们有一行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"',我们想提取这行日志里面所有的内容,可以写多个(?P<name>expr)来提取,其中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<remote_ip>[^ ]*) (?P<date>[^ ]*) "(?P<request>[^"]*)" 
(?P<status>[^ ]*) (?P<size>[^ ]*) "(?P<referrer>[^"]*)" "(?P<user_agent>[^"]*)"')
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

热心网友 时间:2022-04-06 01:00

1.测试正则表达式是否匹配字符串的全部或部分
regex=ur"" #正则表达式
if re.search(regex, subject):
do_something()
else:
do_anotherthing()

2.测试正则表达式是否匹配整个字符串

regex=ur"/Z" #正则表达式末尾以/Z结束
if re.match(regex, subject):
do_something()
else:
do_anotherthing()

3.创建一个匹配对象,然后通过该对象获得匹配细节(Create an object with details about how the regex matches (part of) a string)

regex=ur"" #正则表达式
match = re.search(regex, subject)
if match:
# match start: match.start()
# match end (exclusive): atch.end()
# matched text: match.group()
do_something()
else:
do_anotherthing()

4.获取正则表达式所匹配的子串(Get the part of a string matched by the regex)

regex=ur"" #正则表达式
match = re.search(regex, subject)
if match:
result = match.group()
else:
result = ""
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
请问夏龙通信客服是多少? 药房人员不保销药品代替报销药品申请怎么写 水族是少数民族吗水族的介绍 2013年高考,成绩总是徘徊350左右(文),六科没有自己的优势,只想上二本线... ...年农历4月28日午时出生,我想测一下八字是什么样的? excel2007只显示公式无法显示结果的解决方案 excel2007公式不计算的解决方法 中山大学的结构工程 为专业学位研究生吗 关于建筑工程的专硕学科有哪些 酷睿2e4500配多大的内存最合适 这样获得管理员权限? Xp系统受限用户如何提权 不是管理员怎样在电脑上装软件 在公司,我的电脑没有管理员权限,想更新一些软件,也搞不了。 单位电脑如何查看管理员密码或者把普通用户权限升级为管理员 linux 下怎么将普通用户切换到管理员用户 大家装好win7后是用默认的administrator还是重新建立账户? WIN7怎么转移一个普通用户的的所有设置 配置 文件到超级管理员用户 linux下权限问题,如何让无root管理员权限的用户执行需root权限执行的脚本文件 急!!!如何获得管理员权限对文件进行操作 (C#) linux其他用户不能gedit 禁用网卡提示您没有足够的权限配置此连接的属性,请与管理员联系. win7管理员有密码,其他用户如何提升到管理员权限,不要删除管理员密码的。 怎样用administrator管理员给guest用户权限 怎样在受权限的用户下提权为系统管理员 管理员用户被自己关了怎么用一个普通用户获取管理员权限 如何将一个普通用户提权为系统管理员?? python怎么实现windows终端的颜色 如何用python实现颜色空间转换 怎样用python同时设置画笔和填充颜色 python颜色代码是什么? python如何用正则表达式匹配两个字符串之间的字符串中的某个字符并进行替换? 在PYTHON中如何匹配一个存在多个相同的正则表达式模式的字符串中的所有正则表达式模式? python正则表达式匹配? python 使用正则表达式 匹配“非长字符串” python正则表达式,这样的字符串怎么匹配? python 怎样用正则表达式匹配不包含某些字符的字符串 python中的正则表达式匹配的问题? python如何用正则匹配字符串后到行尾的所有字符 Python正则表达式的几种匹配用法 如何用Python正则表达式去匹配汉字加字母加数字的字符串 关联规则中Apriori演算法的一个小问题 Clementine关联规则Apriori算法事务模式怎么使用 关于数据挖掘中的apriori算法,帮忙推出关联规则 事务数为 5 支持度为0.6,置信度为0.6 关联规则挖掘算法和方法是一回事吗?apriori算法属于关联规则挖掘的方法吗? 牡丹江师范 数据挖掘算法与clementine实践第5章 apriori算法中满足什么条件的数据会可能得到更多的关联规则 金融数学的研究内容 如何提高apriori算法的效率 金融数学会涉及到哪些方面