REGEX例子
作为REGEX的例子,代码9.3显示了一个给定的文件有多少行,具有给定的模式,通过命令行输入(注:有更有效率的方式来实现这个功能,如Unix下的grep命令,在这里只是给出了另一种方式)。这个程序像下面这样执行:
program_name.py file_name pattern
这里file_name是文件的名字,pattern是需要查找的模式:
列表9.3:计算多少行包含有一个用户给定的模式
import re,sys
rgx = re.compile(sys.argv[2])
counter = 0
with open(sys.argv[1]) as fh :
for line in fh:
if rgx.search(line):
counter += 1
print (counter)
这个脚本没有记录有多少模式的单词在文件中出现。如果一个单词在同一行中出现多于一次,它只记为一次。下面的脚本对给定模式所有出现进行计数:
import re, sys
rgx = re.compile(sys.argv[2])
counter = 0
with open(sys.argv[1]) as fh:
for line in fh:
####这一句要不要都行"if rgx.findall(line):"
counter += len(rgx.findall(line)) print (counter)
re.sub
sub(rpl,str[,count=0]): 把rpl替换为字符串(str)来与它定义的REGEX一致。第三个参数是可选的,表示我们想要替代多少次,而默认值是零,这意味着,它取代了所有的出现。这与字符串的replace方法是非常相似,只是后者更换为另一个文本,而不是替换位于一个REGEX的文字。
列表 9.5 删除GC重复(多余三个GC的行)
import re
rgx = re.compile("(?:GC){3,}")
seq = "ATGATCGTACTGCGCGCTTCATGTGATGCGCGCGCGCAGACTATAAG"
print ("Before:%s" %seq)
print ("After: %s" %rgx.sub("",seq)) ####这里 rgx.sub("",seq) 会自动返回被替换后的新字符串。
这个程序的产物是
Before: ATGATCGTACTGCGCGCTTCATGTGATGCGCGCGCGCAGACTATAAG
After: ATGATCGTACTTTCATGTGATAGACTATAAG
re.subn
subn(rpl,str[,count=0]): 它具有和sub相同的功能,唯一不同是不返回新的字符串,而是返回一个元组,有两个元素:新的字符串和替代数目。当除了替换字符串中的一个模式,还需要知道多少替换已作出时使用此函数。
re.sub和re.subn的区别如下:
>>> seq
'ATATAAGATGCGCGCGCTTATGCGCGCA'
>>> regex = re.compile("(?:GC){3,}")
>>> regex.subn("",seq)
('ATATAAGATTTATA', 2)
>>> regex.sub("",seq)
'ATATAAGATTTATA'
就是说re.subn除了返回新的字符串之外,还会返回被替换的数目。
REGEX例子的更多相关文章
- Scala HandBook
目录[-] 1. Scala有多cool 1.1. 速度! 1.2. 易用的数据结构 1.3. OOP+FP 1.4. 动态+静态 1.5. DSL 1.6 ...
- 2018.6.13 Java语言基础复习总结
Java语言基础与面向对象编程实践 第一章 初识Java 1.1机器语言 机器语言是指一台计算机全部的指令集合.机器语言室友0和1组成的二进制数,是一串串由0和1组成的指令序列,可将这些指令序列交给计 ...
- Java 面向对象(八)
常用类之String String字符串类 什么是字符串?就是把多个字符,串连一起. String字符串的本质 其实是一个char[]数组 /**该值用于字符存储.*/ private final c ...
- pymongdb入门
Pymongo入门 安装 pip install pymongo 连接 实际就是实例化一个客户端对象,然后客户端对象中指定一个库作为库对象,库对象中的集合对象就是之后常用来执行操作的对象 1 ''' ...
- day52-正则表达式03
正则表达式03 5.6正则表达式三个常用类 java.util.regex 包主要包括以下三个类:Pattern类.Matcher类和PatternSyntaxException类 Pattern类 ...
- (译)JavaScript 中的正则表达式(RegEx)实操——快速掌握正则表达式,伴有随手可练的例子————(翻译未完待续)
(原文:https://blog.bitsrc.io/a-beginners-guide-to-regular-expressions-regex-in-javascript-9c58feb27eb4 ...
- .net正则表达式大全(.net 的 System.Text.RegularExpressions.Regex.Match()方法使用)
正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET的System.dll类库提供的System.Text.RegularExpression ...
- RSA加密例子和中途遇到的问题
在进行RSA加密例子 package test; import java.io.IOException; import java.security.Key; import java.security. ...
- [PHP] - Laravel - 列表、新增、修改、删除例子
前言 Laravel默认是自带了CURD的功能,使用路由的Route::resource可以做到. 但真正的项目中,这往往不是我们所需要的.因为一个项目会有比较复杂的计算.验证等功能. 下面是对项目中 ...
随机推荐
- 一起学 Java(三) 集合框架、数据结构、泛型
一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...
- html5 canvas常用api总结(三)--图像变换API
canvas的图像变换api,可以帮助我们更加方便的绘画出一些酷炫的效果,也可以用来制作动画.接下来将总结一下canvas的变换方法,文末有一个例子来更加深刻的了解和利用这几个api. 1.画布旋转a ...
- 深入理解DIP、IoC、DI以及IoC容器
摘要 面向对象设计(OOD)有助于我们开发出高性能.易扩展以及易复用的程序.其中,OOD有一个重要的思想那就是依赖倒置原则(DIP),并由此引申出IoC.DI以及Ioc容器等概念.通过本文我们将一起学 ...
- 【WCF】自定义错误处理(IErrorHandler接口的用法)
当被调用的服务操作发生异常时,可以直接把异常的原始内容传回给客户端.在WCF中,服务器传回客户端的异常,通常会使用 FaultException,该异常由这么几个东东组成: 1.Action:在服务调 ...
- UWP开发之Mvvmlight实践六:MissingMetadataException解决办法(.Net Native下Default.rd.xml配置问题)
最近完成一款UWP应用,在手机端测试发布版(Release)的时候应用莫名奇妙的强行关闭,而同样的应用包在PC端一点问题都没有,而且Debug版在两个平台都没有问题,唯独手机的Release版有问题. ...
- 【算法】C语言实现数组的动态分配
C语言实现数组的动态分配 作者:白宁超 2016年10月27日20:13:13 摘要:数据结构和算法对于编程的意义不言而喻,具有指导意义的.无论从事算法优化方向研究,还是大数据处理,亦或者网站开发AP ...
- 图解CSS3制作圆环形进度条的实例教程
圆环形进度条制作的基本思想还是画出基本的弧线图形,然后CSS3中我们可以控制其旋转来串联基本图形,制造出部分消失的效果,下面就来带大家学习图解CSS3制作圆环形进度条的实例教程 首先,当有人说你能不能 ...
- linux-图形化远程管理协议
远程管理控制方式: RDP(remote desktop protocol)协议: telnet: SSH(Secure Shell): RFB(Remote FrameBuffer)协议(图形化远程 ...
- CentOS下Zabbix安装部署及汉化
搭建环境:Centos6.5_x86_64,Zabbix2.4.5,epel 源 服务端: 1.安装开发软件包yum -y groupinstall "Development Tools&q ...
- .NET面试题系列[2] - .NET框架基础知识(2)
3 程序集 面试出现频率:虽然很重要但不怎么出现,可能会考你定义,以及程序集包括什么,然后自然的话题就跑到反射上去了. 重要程度:8/10,很重要 需要理解的程度:知道程序集包括IL和元数据.知道元数 ...