python正则表达式01--贪心算法和非贪心算法findall()
import re st = 'asdfasxxixxdafqewxxlovexxsadawexxyouxxas' # .
#点匹配除换行符外的任意字符
a0 = re.findall('xx.',st)
#print(a0)
#['xxi', 'xxd', 'xxl', 'xxs', 'xxy', 'xxa'] a1 = re.findall('xx..',st)
#print(a1)
#['xxix', 'xxlo', 'xxsa', 'xxyo', 'xxas'] # *
#星匹配前面的一个字符一次或多次
b0 = re.findall('x*',st)
#print(b0)
#['', '', '', '', '', '', 'xx', '', 'xx', '', '', '', '', '', '', 'xx', '', '', '', '', 'xx', '', '', '', '', '', '', 'xx', '', '', '', 'xx', '', '', ''] # ?
#问号匹配前面的一个字符0次或者1次
c0 = re.findall('x?',st)
#print(c0)
#['', '', '', '', '', '', 'x', 'x', '', 'x', 'x', '', '', '', '', '', '', 'x', 'x', '', '', '', '', 'x', 'x', '', '', '', '', '', '', 'x', 'x', '', '', '', 'x', 'x', '', '', ''] #贪心算法(点星)尽可能多的匹配 -- .*
#尽可能长的匹配字符串
a = re.findall('xx.*xx',st)
#print(a) #运行结果
#['xxixxdafqewxxlovexxsadawexxyouxx'] #非贪心算法(点星问号)少食多餐 -- .*?
#返回列表
b = re.findall('xx.*?xx',st)
#print(b)
#运行结果
#['xxixx', 'xxlovexx', 'xxyouxx'] #非贪心算法(点星问号)少食多餐 -- .*?
#返回列表
c = re.findall('xx(.*?)xx',st)
#print(c)
#运行结果
#['i', 'love', 'you'] # re.S 匹配换行符 ss = '''asdfasxxixxdafqewxxlove
xxsadawexxyouxxas'''
d = re.findall('xx(.*?)xx',ss)
e = re.findall('xx(.*?)xx',ss,re.S)
print("无re.S:%s\n有re.S:%s"%(d,e))
#运行结果
#无re.S:['i', 'sadawe']
#有re.S:['i', 'love\n', 'you']
贪心算法,非贪心算法
python正则表达式01--贪心算法和非贪心算法findall()的更多相关文章
- 正則表達式re中的贪心算法和非贪心算法 在python中的应用
之前写了一篇有关正則表達式的文章.主要是介绍了正則表達式中通配符 转义字符 字符集 选择符和子模式 可选项和反复子模式 字符串的開始和结尾 ,有兴趣的能够查看博客内容. 此文章主要内容将要介绍re中的 ...
- Python 正则表达式 贪心匹配和非贪心匹配
Python的正则表达式默认是“贪心匹配”,即在有第二义的情况下,尽可能匹配最长的字符串,在正则表达式的花括号后面跟上问号,可以变为非贪心模式 >>> >>> ha ...
- 第11.9节 Python正则表达式的贪婪模式和非贪婪模式
在使用正则表达式时,匹配算法存在贪婪模式和非贪婪模式两种模式,在<第11.8节 Pytho正则表达式的重复匹配模式及元字符"?". "*". " ...
- Python - 正则表达式 - 第二十二天
正则表达式 - 教程 正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"). 正则表达式使用单 ...
- Python正则表达式\W+和\W*匹配过程的深入分析
在学习re.split函数的处理过程中,发现执行如下语句及返回与老猿预想的不一致: >>> re.split('\W*','Hello,world') ['', 'H', 'e', ...
- Python正则表达式re.match(r"(..)+", "a1b2c3")匹配结果为什么是”c3”?
在才开始学习正则表达式处理时,老猿对正则表达式:re.match(r"(-)+", "a1b2c3") 返回的匹配结果为"c3"没有理解,学 ...
- java并发之非阻塞算法介绍
在并发上下文中,非阻塞算法是一种允许线程在阻塞其他线程的情况下访问共享状态的算法.在绝大多数项目中,在算法中如果一个线程的挂起没有导致其它的线程挂起,我们就说这个算法是非阻塞的. 为了更好的理解阻塞算 ...
- 基于CAS操作的非阻塞算法
非阻塞算法(non-blocking algorithms)定义 所谓非阻塞算法是相对于锁机制而言的,是指:一个线程的失败或挂起不应该引起另一个线程的失败或挂起的一种算法.一般是利用硬件 ...
- 29、Java并发性和多线程-非阻塞算法
以下内容转自http://ifeve.com/non-blocking-algorithms/: 在并发上下文中,非阻塞算法是一种允许线程在阻塞其他线程的情况下访问共享状态的算法.在绝大多数项目中,在 ...
随机推荐
- SAP常用函数
1.获取月末最后一天日期 DATA LAST_DATE TYPE SY-DATUM. CALL FUNCTION 'LAST_DAY_OF_MONTHS' EXPORTING day_in = sy- ...
- 将pugixml库编译成动态库的做法
作者:朱金灿 来源:http://blog.csdn.net/clever101 pugixml库默认是编译成静态库的.要把pugixml库编译成一个动态库,需要对代码做一些修改,具体是将 // If ...
- Android setUserVisibleHint-- fragment真正的onResume和onPause方法
这个情况仅适合与多个fragment之间切换时统计,而非activity和fragment同时交互,因当时项目为首页4个fargment时长统计,因此适合,经下面网友评论指出,特在这里写出此问题,因最 ...
- react-native —— 在Mac上搭建React Native Android开发环境
需要:JDK,Android SDK,Node.js 1.安装JDK 去Java官网下载列表选择Mac OS X x64版 2.安装Android SDK 虽然现在谷歌推荐使用Android ...
- Javascript基础--函数(Function对象)
1.函数是一段可执行的代码,函数可多次调用,模块化管理. 2.使用function语句,function funName([arg1][,arg2]....[,argn]){代码块}.所有版本可用,一 ...
- Qt开发北斗定位系统融合百度地图API及Qt程序打包发布
Qt开发北斗定位系统融合百度地图API及Qt程序打包发布 1.上位机介绍 最近有个接了一个小型项目,内容很简单,就是解析北斗GPS的串口数据然后输出经纬度,但接过来觉得太简单,就发挥了主观能动性,增加 ...
- 通过HTTP响应头让浏览器自动刷新
以前如果需要让网页过几秒自动刷新一次,我都会在页面通过JS调用setTimeout来做,最近发现原来服务器通过添加响应头部信息来提示浏览器需要在多少时间之后重新加载页面. 代码很简单: respons ...
- CentOS7 设置开机自启
[root@master-1 ~]# systemctl enable mariadb ln -s '/usr/lib/systemd/system/mariadb.service' '/etc/sy ...
- c++参数传递的三种方式
一般来说C++中参数传递有三种方式:值传递.指针传递.引用传递 1.值传递——传值 值传递是最常见的一种参数传递的方式,但是对初学者来说也最容易出错.如下例: #include<iostream ...
- 关于 npm install 命令
使用 `npm install` 命令安装模块时 ,有以下几种形式: 安装模块到项目 node_modules 目录下,不会将模块依赖写入 dependencies 或 devDependencies ...