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()的更多相关文章

  1. 正則表達式re中的贪心算法和非贪心算法 在python中的应用

    之前写了一篇有关正則表達式的文章.主要是介绍了正則表達式中通配符 转义字符 字符集 选择符和子模式 可选项和反复子模式 字符串的開始和结尾 ,有兴趣的能够查看博客内容. 此文章主要内容将要介绍re中的 ...

  2. Python 正则表达式 贪心匹配和非贪心匹配

    Python的正则表达式默认是“贪心匹配”,即在有第二义的情况下,尽可能匹配最长的字符串,在正则表达式的花括号后面跟上问号,可以变为非贪心模式 >>> >>> ha ...

  3. 第11.9节 Python正则表达式的贪婪模式和非贪婪模式

    在使用正则表达式时,匹配算法存在贪婪模式和非贪婪模式两种模式,在<第11.8节 Pytho正则表达式的重复匹配模式及元字符"?". "*". " ...

  4. Python - 正则表达式 - 第二十二天

    正则表达式 - 教程 正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"). 正则表达式使用单 ...

  5. Python正则表达式\W+和\W*匹配过程的深入分析

    在学习re.split函数的处理过程中,发现执行如下语句及返回与老猿预想的不一致: >>> re.split('\W*','Hello,world') ['', 'H', 'e', ...

  6. Python正则表达式re.match(r"(..)+", "a1b2c3")匹配结果为什么是”c3”?

    在才开始学习正则表达式处理时,老猿对正则表达式:re.match(r"(-)+", "a1b2c3") 返回的匹配结果为"c3"没有理解,学 ...

  7. java并发之非阻塞算法介绍

    在并发上下文中,非阻塞算法是一种允许线程在阻塞其他线程的情况下访问共享状态的算法.在绝大多数项目中,在算法中如果一个线程的挂起没有导致其它的线程挂起,我们就说这个算法是非阻塞的. 为了更好的理解阻塞算 ...

  8. 基于CAS操作的非阻塞算法

    非阻塞算法(non-blocking algorithms)定义        所谓非阻塞算法是相对于锁机制而言的,是指:一个线程的失败或挂起不应该引起另一个线程的失败或挂起的一种算法.一般是利用硬件 ...

  9. 29、Java并发性和多线程-非阻塞算法

    以下内容转自http://ifeve.com/non-blocking-algorithms/: 在并发上下文中,非阻塞算法是一种允许线程在阻塞其他线程的情况下访问共享状态的算法.在绝大多数项目中,在 ...

随机推荐

  1. C++ Knowledge series Inheritance & RTTI & Exception Handling

    Inheritance The pointer or reference to base class can address/be assigned with any of the classes d ...

  2. LotusScript_导出数据库路径和名称

    对服务器有些数据库需要建立复本,新建拷贝,修改权限(ACL),或是修改数据库标识符(ID)需要找到这些数据库.这个方法是导出指定服务器上所有数据库的路径,数据库名,标识符等信息,导出后对Excel表格 ...

  3. [c/c++]判断一个字符串是不是UTF-8字符串

    #define CHECK_LENGTH 20       //检查是否为utf8编码时所检查的字符长度  int is_utf8_string(char *utf) { int length = s ...

  4. u-boot分析(七)----内存初始化

    u-boot分析(七) 上篇博文我们按照210的启动流程,分析到了时钟初始化,今天我们继续按照u-boot的启动流程对内存的初始化进行分析. 今天我们会用到的文档: 1.        2440芯片手 ...

  5. sharepoint知识点总结

    { users.Add(value.User); } else { SPGroup group = web.Groups.GetByID(value.LookupId); groups.Add(gro ...

  6. redis笔记(四)

    本篇内容主要是简单介绍redis在python中的使用from time import sleep在python代码中使用redis需要导入redis packageimport redis简单的连接 ...

  7. Oracle VM VirtualBox 共享文件夹设置

    在Windows平台下,这货完全没有VMware好用,但在Linux平台就很好用. 学校机房的电脑打开虚拟机就不能插优盘,一插优盘就卡死,所以,只好用共享文件夹了. 1.在虚拟机外部新建一个文件夹 假 ...

  8. Vim-命令合集

    命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 vim 直接启动vim vim filename 打开vim ...

  9. Altium_Designer-原理图库如何添加低电平有效的管脚?

    在编辑元件原理图符号时,在display name选项中将要加低电平的字符后面都加上“\”即可,如图:

  10. Linux 命令后台运行

    写这个随笔主要是每次Deepin用shadowsocks的时候总需要命令行启动,然后一个终端就一直开着总是点错了就给关了. (不知道为什么我的Deepin的shadowsocks-qt5总是连接不上的 ...