python正则表达式非贪婪(python中如何使用正则表达式的非贪婪模式示例)

1.python中如何使用正则表达式的非贪婪模式示例

import re

str='abcdxyzsd1232abc'

regex_greed='a.*d' # 贪婪模式,a开头找到最后的一个d才结束

match_greed=re.match(regex_greed,str)

print match_greed.group() # 匹配结果:abcdxyzsd

regex_not_greed='a.*?d' # 非贪婪模式,a开头找到第一个d就结束

match_not_greed=re.match(regex_not_greed,str)

print match_not_greed.group() # 匹配结果:abcd

2.正则表达式的贪婪模式和非贪婪模式,如何取div ,li 标签的循环内容,

最近一直在研究正则表达式,原来接触过一段时间,但好久没有用了,基本都忘光了,然后上个礼拜五,又开始学习正则表达式,周末在家做了个采集电影院网站信息的一个程序,疯狂的实验了把正则,发现了一些常用的匹配正则和一些正则表达式工具。

MTracer正则表达式验证工具,一般好用,我是只下载了个这个玩了一会觉得上手挺简单的,就推荐下。 正则表达式工具下载地址: MTracer.rar (首先打开工具,在右边有上下两个输入框,上面那个是输入正则的,下面那个是输入要匹配字符串的,上下内容输入好以后,就可以单击匹配按钮了,如果觉得匹配ok的话,就可以直接单击上面菜单的代码生成,来生成你要的C#代码,java代码,Script代码等等) 比如我要匹配两个标签里的所有东西如<。

3.正则表达式非贪婪模式是怎么回事

pattern+?是勉强匹配模式,也就是说这只匹配pattern能匹配到的最少字符,便不再往后匹配了。

这是与贪婪模式最大的不同。 (pattern在这里面指的是一个正则串)(\d+?)(0+?) 前一个分组至少要匹配一个数字,后一个分组至少要匹配一个0,所以最终会匹配到 1230,如果你再往下匹配的话,还会匹配到后面的00。

(\d+?)(\d+?) 前一个分组至少要匹配一个数字,后一个分组也要至少要匹配一个数字,所以会匹配到12,现往下匹配还会匹配到30和00测试如下:。

4.python的贪婪和非贪婪匹配和分组搭配,运算规律是怎么样的

第一个:我把贴吧给你的回复粘过来吧。

.*这个会先吞掉所有字符串,因为后面还有,.*会自觉的吐一些出来给后面的,这就是回溯。先吐出一个3,\d匹配成功继续.*勉强可以\d告诉前面的我匹配不了,挨个向前传话,.*没吃到也就吐不出了,.*告诉前面的\d说不行。

\d说我是固定的啊我没东西给你,我得向前要。\d吐出刚吃的3告诉最前面的.*,说后面的说了不行啊你吃的有点多再让点出来。

.*再吐出一个2,\d吃掉这个2,告诉后面的.*你继续。.*吃掉3,告诉后面的\d,该你了。

\d一看不行啊我没东西吃了啊。于是告诉他前面的.*说不行我这没得吃了,你得吐。

.*吐出刚吃的3说了我反正吃不吃都无所谓啦,3给你。\d一看3可以是我的菜。

\d吃了3告诉大家我是最后一个我ok了。所以结果就是['23']第二个:如果你理解了上面的,你就知道他俩在这没什么区别。

因为(\d.*\d)这里面的.*都没机会贪婪。所以2和1的过程差不多。

第三个:我在贴吧也有回复顺便粘过来。.*?(\d.*\d) 这个来说.*?是非贪婪也就是懒惰它是尽量少匹配。

所谓贪婪就是就是只要满足我的我先来,一直到不满足我的我才停。比如(a|b)*b 去查找aaaababaab (ab)*开始会把所有都给吞掉,到b时回溯一位正好满足那么结果就是 整个字符串。

aaaababaab而.*?这样的属于懒惰匹配,我尽量少来,让给后面的来。后面的不行我再来。

还拿(a|b)*?b 去查aaaababaab 这时它懒惰了只查(a|b){0}这是最懒惰的情况,然后交给后面,后面的b一看是a回溯(告诉它不行你别那么懒,你还要继续)于是(a|b)*?匹配一个a继续交给后面,后面不行又回溯,直到(a|b)*?配匹到aaaa后面的b满足匹配了那么查找结束。所以这个返回的是aaaab再回到你问的.*?(\d.*\d) 查找:发布于2018/12/23.*?先查找一个.{0}也就是空字符串交给后面\d,\d匹配一个2没问题继续交给后面的.*,而这个.*是咱们说的贪婪模式,他会全吞所有后面的字符018/12/23,后面的\d发现没字符了回溯.*吐出一个3,\d匹配成功结束查找所以re.findall('.*?(\d.*\d)',content),返回['2018/12/23']第四个:在这里再分析一下。

.*?(\d.*?\d)两个懒惰,上面说了很多了.*?首先匹配''也就是啥都不吃,\d匹配2,.*?又匹配'',\d匹配0匹配成功。那么返回第一个查找值20,因为是findall所以继续往下查找,同理匹配18,继续往下。

.*?还不吃,但是\d发现前面是/不是我的菜回溯,.*?吃掉/,\d匹配1,.*?匹配'',\d匹配2成功返回12,继续往下同上匹配23。所以结果就是['20', '18', '12', '23']。

5.谁能帮我解释一下正则表达式中贪婪匹配和非贪婪匹配的用法

我不知道你说的是java里面的regular expression还是其他的,如果是java的,则不能简单的分为贪婪和非贪婪,应分为Greedy、reluctant和possissive。

这里说一下Greedy和possissive的区别。Greedy匹配就是先进行整个字符串匹配,如果不成功,然后再往前退,然后进行匹配直到匹配成功;而possissive则只对整个字符串匹配一次。

Example:Greedy regular:.*foo Input String: xfooxxxxxxfoo可以匹配成功。Possissive regular: .*+fooInput String: xfooxxxxxxfoo则匹配不成功。

因为它的匹配是这样进行的,先匹配第一个.对应x,然后匹配*对应fooxxxxxxfoo,而foo就没有办法找到对应的字符串,所以就不能成功了!更加详细的文档请参考:。希望对你有所帮助。

python正则表达式非贪婪

转载请注明出处编程代码网 » python正则表达式非贪婪(python中如何使用正则表达式的非贪婪模式示例)

资讯

snifferpython(如何让gsmsniffer变得更加智能化)

阅读(19)

本文主要为您介绍snifferpython,内容包括python遇到网络问题时,怎么解决,如何让gsmsniffer变得更加智能化,如何让gsmsniffer变得更加智能化。当python 遇上 Arduino,似乎一切都在变得更加智能化。你还在手动断开你的C118电源吗?你还在手动按

资讯

用python表白(如何用python写一段浪漫的代码)

阅读(20)

本文主要为您介绍用python表白,内容包括如何优雅地向python程序员表白,如何优雅地向python程序员表白,如何用python写一段浪漫的代码。简单的,可以使用python 的CGI模块,需要你的服务器开启CGI支持。网页内容如下:1234567891011<html> <hea

资讯

python上嵌入文字(Python如何在图片上添加带格式的文本)

阅读(19)

本文主要为您介绍python上嵌入文字,内容包括Python如何在图片上添加带格式的文本,怎样用python在图片里添加一段文字,python中关于图片添加文字。打开IDLE软件,导入相关函数库。from PIL import Image, ImageDraw,ImageFontpython如何给

资讯

apache2.4python(如何使用apache发布python项目)

阅读(43)

本文主要为您介绍apache2.4python,内容包括XP+Python2.5+Apache2.2.4+modpython3.3.1的问题我装的是,Python2.4和apache2.2用modwsgi连接如何设置工程目录的路径用什,zope,python,apache之间是什么关系。首先检查以下要求是否已经达到: Apac

资讯

pythonunix时间戳转换(python怎么将时间戳转化为日期)

阅读(21)

本文主要为您介绍pythonunix时间戳转换,内容包括python如何获取13位的UNIX时间戳,python怎么将时间戳转化为日期,timestamp怎么转换python。当前时间戳:time.time()当前日期:time.ctime()Python下日期到时间戳的转换import datetimeimp

资讯

pythonzipfile(python中的zipfile)

阅读(13)

本文主要为您介绍pythonzipfile,内容包括python中的zipfile,pythonzipfile把整个文件夹内的文件打包没有生成.zip文件,python用zipfile对文件进行压缩并加密(不让人解压缩并修改文件)如。python中的zipfile模块是用于解压/压缩zip文件的,压缩a

资讯

rpm安装python(怎样将python程序及其依赖打包成rpm包部署)

阅读(14)

本文主要为您介绍rpm安装python,内容包括怎样将python程序及其依赖打包成rpm包部署,怎样将python程序及其依赖打包成rpm包部署,我在linux下安装python2.6.22.fc12.i686.rpm软件包时出错python和。可以的,虽然说pip比较流行,但rpm从原理上完全

资讯

workflowpython(在Python环境下比较好的工作流引擎是什么)

阅读(16)

本文主要为您介绍workflowpython,内容包括在Python环境下比较好的工作流引擎是什么,大家都用python做什么开发,大家都用python做哪些开发。CSDN:FixFlow 和类似的软件如 Activiti jBPM 等相比起来,它们之间有哪些区别呢?FFDT:FixFlow 更加符

资讯

python栈与队列(python栈和队列在功能上的区别)

阅读(19)

本文主要为您介绍python栈与队列,内容包括python栈和队列在功能上的区别,python中栈和队列在功能上的区别,python栈和队列在功能上的区别。“栈” 和 “队列” 是数据结构,与具体的语言无关。1.队列先进先出,栈先进后出。2. 对插入和删除操作

资讯

sphinxpython安装(如何使用sphinx生成Python第三方模块的文档)

阅读(14)

本文主要为您介绍sphinxpython安装,内容包括如何使用sphinx生成Python第三方模块的文档,sphinx在windows下到底怎么安装,如何把外部文件导入sphinx。在使用Python的过程中,无疑我们经常需要下载安装第三方模块(如何安装:URL),而安装后我们必然会

资讯

python如何使用源文件(python如何编译使用源文件)

阅读(13)

本文主要为您介绍python如何使用源文件,内容包括简明Python教程里的使用源文件怎么弄啊,python如何编译使用源文件,Python怎么使用源文件。因为系统找不到python.exe,所以说"NO SUCH……“ 你需要进入python目录 c:\python25> 这样的状态输

资讯

python获取股票数据(怎样用python处理股票)

阅读(15)

本文主要为您介绍python获取股票数据,内容包括如何用python获取股票数据,如何用python抓取股票数据,如何用python取所有股票一段时间历史数据。用Python处理股票需要获取股票数据,以国内股票数据为例,可以安装Python的第三方库:tushare;一个国

资讯

python获取客户端ip(python怎么获取本机ip)

阅读(15)

本文主要为您介绍python获取客户端ip,内容包括Python中服务器端获取webservice客户端IP地址,python怎么获取本机ip,求助,python如何获取网站的ip。第一种:复制代码代码如下:import socket import fcntl import struct def get_ip_add

资讯

pythonhttpip伪造(如何伪造http请求的ip地址)

阅读(41)

本文主要为您介绍pythonhttpip伪造,内容包括python可以伪造ip发送http请求吗,如何伪造http请求的ip地址,(pythonsocket伪造client的ip地址)有一python写的socket服务端只接。在项目开发中(web项目),我负责的系统(简称PC),需要调其它系统接口,并且

资讯

snifferpython(如何让gsmsniffer变得更加智能化)

阅读(19)

本文主要为您介绍snifferpython,内容包括python遇到网络问题时,怎么解决,如何让gsmsniffer变得更加智能化,如何让gsmsniffer变得更加智能化。当python 遇上 Arduino,似乎一切都在变得更加智能化。你还在手动断开你的C118电源吗?你还在手动按

资讯

用python表白(如何用python写一段浪漫的代码)

阅读(20)

本文主要为您介绍用python表白,内容包括如何优雅地向python程序员表白,如何优雅地向python程序员表白,如何用python写一段浪漫的代码。简单的,可以使用python 的CGI模块,需要你的服务器开启CGI支持。网页内容如下:1234567891011<html> <hea

资讯

python上嵌入文字(Python如何在图片上添加带格式的文本)

阅读(19)

本文主要为您介绍python上嵌入文字,内容包括Python如何在图片上添加带格式的文本,怎样用python在图片里添加一段文字,python中关于图片添加文字。打开IDLE软件,导入相关函数库。from PIL import Image, ImageDraw,ImageFontpython如何给

资讯

apache2.4python(如何使用apache发布python项目)

阅读(43)

本文主要为您介绍apache2.4python,内容包括XP+Python2.5+Apache2.2.4+modpython3.3.1的问题我装的是,Python2.4和apache2.2用modwsgi连接如何设置工程目录的路径用什,zope,python,apache之间是什么关系。首先检查以下要求是否已经达到: Apac

资讯

pythonunix时间戳转换(python怎么将时间戳转化为日期)

阅读(21)

本文主要为您介绍pythonunix时间戳转换,内容包括python如何获取13位的UNIX时间戳,python怎么将时间戳转化为日期,timestamp怎么转换python。当前时间戳:time.time()当前日期:time.ctime()Python下日期到时间戳的转换import datetimeimp

资讯

pythonzipfile(python中的zipfile)

阅读(13)

本文主要为您介绍pythonzipfile,内容包括python中的zipfile,pythonzipfile把整个文件夹内的文件打包没有生成.zip文件,python用zipfile对文件进行压缩并加密(不让人解压缩并修改文件)如。python中的zipfile模块是用于解压/压缩zip文件的,压缩a

资讯

rpm安装python(怎样将python程序及其依赖打包成rpm包部署)

阅读(14)

本文主要为您介绍rpm安装python,内容包括怎样将python程序及其依赖打包成rpm包部署,怎样将python程序及其依赖打包成rpm包部署,我在linux下安装python2.6.22.fc12.i686.rpm软件包时出错python和。可以的,虽然说pip比较流行,但rpm从原理上完全

资讯

python参数检查(python怎么查看函数有什么参数)

阅读(21)

本文主要为您介绍python参数检查,内容包括python怎么查看函数有什么参数,python怎么查看有几个参数,python检查是否有命令行参数。Python中查看函数参数有四种方式:1. F(arg1,arg2,…)这是最常见的定义方式,一个函数可以定义任意个参数,每个参