python贪婪匹配以及多行匹配的实例讲解

yipeiwu_com5年前Python基础

1 非贪婪flag

>>> re.findall(r"a(\d+?)", "a23b")
  ['2']
>>> re.findall(r"a(\d+)", "a23b")
  ['23']

注意比较这种情况:

>>> re.findall(r"a(\d+)b", "a23b")
  ['23']
>>> re.findall(r"a(\d+?)b", "a23b")
  ['23']

2 如果你要多行匹配,那么加上re.S和re.M标志

re.S:.将会匹配换行符,默认.不会匹配换行符

>>> re.findall(r"a(\d+)b.+a(\d+)b", "a23b\na34b")
  []
>>> re.findall(r"a(\d+)b.+a(\d+)b", "a23b\na34b", re.S)
  [('23', '34')]
>>>

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

>>> re.findall(r"^a(\d+)b", "a23b\na34b")
  ['23']
>>> re.findall(r"^a(\d+)b", "a23b\na34b", re.M)
  ['23', '34']

但是,如果没有^标志,

>>> re.findall(r"a(\d+)b", "a23b\na23b")
  ['23', '23']

以上这篇python贪婪匹配以及多行匹配的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

pyqt5自定义信号实例解析

pyqt5自定义信号实例解析

本文研究的主要是pyqt5自定义信号实例解析的相关内容,具体介绍如下。 PyQt5已经自动定义了很多QT内建的信号。但是在实际的使用中为了灵活使用信号与槽机制,我们可以根据需要自定义si...

python实现对指定字符串补足固定长度倍数截断输出的方法

简单的小练习,注意考虑全可能就行,下面是实现: #!usr/bin/env python #encoding:utf-8 ''' __Author__:沂水寒城 功能:̶...

Pandas时间序列重采样(resample)方法中closed、label的作用详解

Pandas提供了便捷的方式对时间序列进行重采样,根据时间粒度的变大或者变小分为降采样和升采样: 降采样:时间粒度变大。例如,原来是按天统计的数据,现在变成按周统计。降采样会涉及到...

python对DICOM图像的读取方法详解

DICOM介绍 DICOM3.0图像,由医学影像设备产生标准医学影像图像,DICOM被广泛应用于放射医疗,心血管成像以及放射诊疗诊断设备(X射线,CT,核磁共振,超声等),并且在眼科和牙...

解决Python 命令行执行脚本时,提示导入的包找不到的问题

解决Python 命令行执行脚本时,提示导入的包找不到的问题

在Pydev能正常执行的脚本,在导出后在命令行执行,通常会报自己写的包导入时找不到。 一:报错原因 在PyDev中,test.py 中导入TestUserCase里面的py文件时,会写...