『Re』正则表达式模块_常用方法记录
一个比较完备的正则表达式介绍
几个基础函数
- re.compile(pattern, flags=0)
-
将正则表达式模式编译成一个正则表达式对象,它可以用于匹配使用它的match ()和search ()等方法。
实际有两种使用方式:
pattern.匹配方法(string) 或者 re.匹配方法(pattern,string)
使用或|来强化匹配规则:
pattern_t = re.compile(
'[0-9〇一二三四五六七八九]{4}年.{1,2}月.{1,3}日'
'|同年.{1,2}月.{1,3}日'
'|[0-9〇一二三四五六七八九]{4}年.{1,2}月.{1}旬'
'|[0-9〇一二三四五六七八九]{4}年.{1,2}月底'
'|[0-9〇一二三四五六七八九]{4}年.{1,2}月'
'|[0-9〇一二三四五六七八九十]{1,2}月.{1,3}日')
- re.findall(pattern, string, flags=0)
-
返回字符串
经典用法,切词操作,匹配长度大于1的全字母序列
re.findall(r'[a-zA-Z]{2,}',line.strip())很好用的一个表达式,返回汉字字符(list形式)
news = re.findall(r'[\u4e00-\u9fa5]',word)
- re.finditer(pattern, string, flags=0)
-
返回一个迭代器符合
正则表达式迭代器对象
之所以单提出来,是因为迭代器在匹配组groups的时候真的好用,
pattern_c = re.compile('[\n。,,《;](.{,15}?人民法院)')
_court_list = [name.group(1) for name in pattern_c.finditer(lines)]
group(1)表示匹配到的符合第一组的部分,2、3……类推,而0表示包含全部匹配的各个组结果的元组。
贪婪匹配
比如正则表达式:
'审理(.+)指控'
我希望不去贪婪匹配,那么应该是
'审理(.+)指控?'
而非
'审理(.+?)指控'
『Re』正则表达式模块_常用方法记录的更多相关文章
- 『Pickle』数据结构持久化模块_常用方法记录
可以把数据结构保存进文件并直接读出, 不论读取或者是保存,我们都需要借助open()函数,并且是二进制方式(‘wb’,‘rb’) json模块可以把字典结构改写为string然后保存,并可以反向读取字 ...
- 『TensorFlow』分布式训练_其三_多机分布式
本节中的代码大量使用『TensorFlow』分布式训练_其一_逻辑梳理中介绍的概念,是成熟的多机分布式训练样例 一.基本概念 Cluster.Job.task概念:三者可以简单的看成是层次关系,tas ...
- 『Numpy』内存分析_高级切片和内存数据解析
在计算机中,没有任何数据类型是固定的,完全取决于如何看待这片数据的内存区域. 在numpy.ndarray.view中,提供对内存区域不同的切割方式,来完成数据类型的转换,而无须要对数据进行额外的co ...
- 『TensorFlow』读书笔记_降噪自编码器
『TensorFlow』降噪自编码器设计 之前学习过的代码,又敲了一遍,新的收获也还是有的,因为这次注释写的比较详尽,所以再次记录一下,具体的相关知识查阅之前写的文章即可(见上面链接). # Aut ...
- 『TensorFlow』分布式训练_其二_单机多GPU并行&GPU模式设定
建议比对『MXNet』第七弹_多GPU并行程序设计 一.tensorflow GPU设置 GPU指定占用 gpu_options = tf.GPUOptions(per_process_gpu_mem ...
- 『PyTorch』第九弹_前馈网络简化写法
『PyTorch』第四弹_通过LeNet初识pytorch神经网络_上 『PyTorch』第四弹_通过LeNet初识pytorch神经网络_下 在前面的例子中,基本上都是将每一层的输出直接作为下一层的 ...
- 『MXNet』第九弹_分类器以及迁移学习DEMO
解压文件命令: with zipfile.ZipFile('../data/kaggle_cifar10/' + fin, 'r') as zin: zin.extractall('../data/k ...
- python之模块_随手记录的模块
目录 1.StringIO模块 2.string模块 3.pprint模块 4.struct模块 5.uuid模块 6.itertools 7.prettytable 1.StringIO (1)使用 ...
- 『MXNet』第一弹_基础架构及API
MXNet是基础,Gluon是封装,两者犹如TensorFlow和Keras,不过得益于动态图机制,两者交互比TensorFlow和Keras要方便得多,其基础操作和pytorch极为相似,但是方便不 ...
随机推荐
- 【教程】Git在Eclipse中的安装和基本使用
一.安装 点击 Help->Install New Software->add 安装地址为:http://download.eclipse.org/egit/updates/ 选择插件 ...
- Oracle联合多个子查询(inner join)
select aaa.*,bbb.xh from (select xn,xq,kcdm,kcmc,xf,xkkh,kcxz from jxrwbview where xn='2017-2018' gr ...
- how do I get the difference between two R named lists?
aa<- list(a=1, b="two", c=list(3, "four")) bb <- list(a=1, c=list(3, " ...
- c# 后台post,包含file文件
http request 相关 private bool Upload(KeyValuePair<string, string>[] paramString,Stream paramFil ...
- springboot搭建环境整合jsp页面整合mybatis
1.pom文件依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www ...
- 【Python】【socket】
[server.py] """#练习1import socketimport threading sock = socket.socket()sock.bind(('12 ...
- 切片对象的demo
a = slice(, ) s = 'HelloWorld' print(a.indices(len(s))) for i in range(*a.indices(len(s))): print(s[ ...
- Java Virtual Machine(Java虚拟机)
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的. Java语言 ...
- java static方法不能被重写@Override
重写方法的目的是为了多态,或者说:重写是实现多态的前提,即重写是发生在继承中且是针对非static方法的. 语法上子类允许出现和父类只有方法体不一样其他都一模一样的static方法,但是在父类引用指向 ...
- Teams UVA - 11609
题意就不多说了这个小规律不算难,比较容易发现,就是让你求一个数n*2^(n-1):很好想只是代码实现起来还是有点小困(简)难(单)滴啦,一个快速幂就OK了: 代码: #include<stdio ...