生物信息学基础教程第4讲正则表达式教程
生物信息学基础教程4讲正则表达式教程市公开课获奖课件省名师示范课获奖课件
‘gr.p’匹配gr后跟一种任意字 符,后为p旳行
*
匹配0个或 多种先前字 符
‘*grep’匹配全部0个或多种空 格紧跟grep旳行
[]
匹配一种指 定范围旳字 符
‘[Gg]rep’匹配涉及Grep或 grep旳行
练习题:这些命令都能干啥?
1. ls –l | grep ‘^a’ 2. grep ‘test’ d* 3. grep ‘test’ aa bb cc 4. grep ‘[a-z]\{5\}’ aa 5. grep ‘w\(es\)t.*\1’ aa 6. grep ‘^n’ datafile 7. grep ‘4$’ datafile 8. grep ‘5\..’ datafile 9. grep ‘\.5’ datafile 10. grep ‘^[wesn]’ datafile 11. grep ‘[A-Z][A-Z] [A-Z]’ datafile 12. grep ‘ss* ’ datafile 13. grep ‘[a-z]\{9\}’ datafile 14. grep ‘\<[a-z].*n\>’ datafile
语句之间用分号分隔
awk命令
① print “$1= ”, $1 ② printf:与c语言旳printf类似 ③ next:读取下一条统计并处理 ④ nextfile:读取文件列表旳下一种文件 ⑤ exit:awk停止执行并跳出。假如有END存在,
awk会执行END旳actions
awk语句
赋值语句
i\ 在定位行号后插入新文本 sed ‘4 \i “here add new line”’p temp.txt
d 删除定位行
sed ‘/music/’d temp.txt
55分钟学会正则表达式
55 分钟学会正则表达式正则表达式(“regexes”)即增强查找/字符串替换操作。
当在文本编辑器中编辑文字时,正则表达式经常用 于: 检查文本是否包含一个给定的模式 查找任何匹配的模式 从文本中拉取信息(比如截断) 修改文本和文本编辑器一样,绝大多数高级编程语言支持正则表达式。
在本文中,“文本”仅仅是一个字符串变量,但 是有效的操作却是一致的。
某些编程语言(Perl,JavaScript)甚至为正则表达式提供专用的语法。
但是正则表达式是什么? 一个正则表达式仅仅为一个字符串。
它没有长度限制,但是通常该字符串很短。
下面看几个例子: I had a \S+ day today [A-Za-z0-9\-_]{3,16} \d\d\d\d-\d\d-\d\d v(\d+)(\.\d+)* TotalMessages="(.*?)" <[^<>]>这个字符串实际上是一个极小的计算程序,并且正则表达式是一门语法小而简洁,领域特定的编程语言。
牢 记以下几点,它们不该在学习过程中让你感到惊讶: 每个正则表达式都能分解成一串指令。
“找到这个,再找到那个,然后找到其中一个...” 一个正则表达式拥有输入(文本)和输出(模式匹配,和有些时候的自定义文本)。
存在语法错误——不是每个字符串都是合法的正则表达式! 语法有些怪异,也可以说是恐怖。
一个正则表达式有时候可以被编译以便更快运行。
正则实现一直有着显著的改变。
对于本文,我所关注的是那些几乎每个正则表达式都实现了的核心语法。
练习 获取一个支持正则的文本编辑器。
我推荐 Notepad++。
下载一篇很长的散文故事比如 Gutenberg 出版社出版的 H. G. Wells 的《时光机器》然后打开它。
下载一部字典,比如这个,解压然后打开。
一切准备就绪,稍后开始练习。
提示: 正则表达式与文件通配符语法完全不兼容,比如*.xml。
正则表达式知识详解
正则表达式知识详解一、什么是正则表达式?1.定义:正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。
构造正则表达式的方法和创建数学表达式的方法一样。
也就是用多种元字符与运算符可以将小的表达式结合在一起来创建更大的表达式。
正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。
2.组成:正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。
模式描述在搜索文本时要匹配的一个或多个字符串。
正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
3.何时使用:验证——从头到尾完整匹配!查找——只要部分匹配即可!二、正则表达式的基本语法和规则1.备选字符集:规定某*一位字符*可用的备选字符的集合语法:[可选字符列表]强调:1. 无论备选字符集包含多少字符,只能选1个2. 必须选1个!比如:6位数字的密码[0123456789][0123456789][0123456789][0123456789][012 3456789][0123456789]简化:1. 当备选字符连续时,可用-表示范围的区间比如:[0123456789]-->[0-9][0-9][0-9][0-9][0-9][0-9][0-9][a-z]-->1位小写字母[A-Z]-->1位大写字母[A-Za-z]-->1位字母,大小写都行[0-9a-zA-Z]-->1位字母或数字都行反选:[^不能选的字符列表]比如:[^47] 强调:^作“除了”使用时,只能放在开头2. 预定义字符集:为常用的字符集专门提供的简化写法!“\d”-->[0-9]-->1位数字“\w”-->[0-9a-zA-Z_]-->1位字母,数字或_“\s”-->1位空字符:匹配任何空白字符,包括空格、制表符、换页符等等。
正则表达式30分钟入门教程——堪称网上能找到的最好的正则式入门教程
正则表达式30分钟⼊门教程——堪称⽹上能找到的最好的正则式⼊门教程本教程堪称⽹上能找到的最好正则表达式⼊门教程本⽂⽬标30分钟内让你明⽩正则表达式是什么,并对它有⼀些基本的了解,让你可以在⾃⼰的程序或⽹页⾥使⽤它。
如何使⽤本教程最重要的是——请给我30分钟,如果你没有使⽤正则表达式的经验,请不要试图在30秒内⼊门——除⾮你是超⼈ :)别被下⾯那些复杂的表达式吓倒,只要跟着我⼀步⼀步来,你会发现正则表达式其实并没有想像中的那么困难。
当然,如果你看完了这篇教程之后,发现⾃⼰明⽩了很多,却⼜⼏乎什么都记不得,那也是很正常的——我认为,没接触过正则表达式的⼈在看完这篇教程后,能把提到过的语法记住80%以上的可能性为零。
这⾥只是让你明⽩基本的原理,以后你还需要多练习,多使⽤,才能熟练掌握正则表达式。
除了作为⼊门教程之外,本⽂还试图成为可以在⽇常⼯作中使⽤的正则表达式语法参考⼿册。
就作者本⼈的经历来说,这个⽬标还是完成得不错的——你看,我⾃⼰也没能把所有的东西记下来,不是吗?⽂本格式约定:专业术语元字符/语法格式正则表达式正则表达式中的⼀部分(⽤于分析) 对其进⾏匹配的源字符串对正则表达式或其中⼀部分的说明本⽂右边有⼀些注释,主要是⽤来提供⼀些相关信息,或者给没有程序员背景的读者解释⼀些基本概念,通常可以忽略。
正则表达式到底是什么东西?字符是计算机软件处理⽂字时最基本的单位,可能是字母,数字,标点符号,空格,换⾏符,汉字等等。
字符串是0个或更多个字符的序列。
⽂本也就是⽂字,字符串。
说某个字符串匹配某个正则表达式,通常是指这个字符串⾥有⼀部分(或⼏部分分别)能满⾜表达式给出的条件。
在编写处理字符串的程序或⽹页时,经常会有查找符合某些复杂规则的字符串的需要。
正则表达式就是⽤于描述这些规则的⼯具。
换句话说,正则表达式就是记录⽂本规则的代码。
很可能你使⽤过Windows/Dos下⽤于⽂件查找的通配符(wildcard),也就是*和?。
布尔正则表达式教程_概述说明以及解释
布尔正则表达式教程概述说明以及解释1. 引言1.1 概述布尔正则表达式是一种用于处理字符串模式匹配的强大工具。
它能够根据用户定义的规则,对输入的文本进行搜索、替换和验证操作。
不同于传统的正则表达式,布尔正则表达式具有更丰富的逻辑运算符和特殊字符,使得匹配过程更加灵活和精确。
1.2 布尔正则表达式简介布尔正则表达式是由布尔运算符、特殊字符和普通字符组成的字符串模式。
布尔运算符包括与(&&)、或(||)、非(!)等,用于实现多条件的逻辑判断。
特殊字符主要用于表示一些通用或特定格式的文本模式,如数字、字母、空格等。
普通字符则是指除了特殊字符外的其他文本内容。
1.3 目的本篇教程旨在帮助读者全面理解并掌握布尔正则表达式,并通过详细解释和示例说明来讲解其基础知识、使用方法以及高级应用技巧。
同时,我们还将探讨布尔正则表达式在实际场景中的应用,并给出相应的建议和展望。
以上是“1. 引言”部分的内容,它主要对布尔正则表达式进行了概述、简介以及阐明了本篇文章的目的。
2. 布尔正则表达式基础知识2.1 什么是布尔正则表达式布尔正则表达式,又称为布尔模式匹配,是一种用于字符串匹配和处理的工具。
它通过使用特定的语法规则来定义一个模式,并通过该模式来判断目标字符串是否与之匹配。
其中,"布尔"表示结果只有两种可能性:匹配或不匹配。
2.2 基本语法规则- 字符匹配:普通字符可以直接用于匹配相同的字符。
- 单个字符通配符:点号(`.`)表示可以匹配除换行符外的任何单个字符。
- 字符类:方括号(`[]`)内可列出多个字符,表示可以匹配其中任意一个字符。
- 字符范围:在字符类中可以使用连字符(`-`)指定范围,如`[a-z]` 表示小写字母。
- 反义字符类:在方括号内插入`^` 表示反义,即需要排除的字符集合。
- 重复次数控制:- `*` 表示前一个元素可以出现0次或更多次;- `+` 表示前一个元素可以出现1次或更多次;- `?` 表示前一个元素可以出现0次或1次;- `{m}` 表示前一个元素必须出现m次;- `{m,}` 表示前一个元素至少出现m次;- `{m,n}` 表示前一个元素至少出现m次,最多出现n次。
正则表达式30分钟入门教程
正则表达式30分钟入门教程正则表达式是一种强大的文本匹配工具,可以在大量的文本数据中进行快速、准确的模式匹配和提取。
对于需要处理文本数据的开发人员和数据分析师来说,掌握正则表达式是非常重要的。
本文将带您在30分钟内入门正则表达式,让您能够快速上手使用。
一、什么是正则表达式?正则表达式是一种用于匹配、查找和替换文本的字符串模式。
它使用特定的语法规则来描述要匹配的字符序列。
正则表达式可以用于验证输入的有效性、从文本中提取特定的信息、替换文本中的指定部分等。
二、正则表达式的基本语法1. 字符匹配:正则表达式中的普通字符表示匹配该字符本身。
例如,正则表达式abc可以匹配字符串abc。
2. 字符类:用方括号[]表示,可以匹配方括号中任意一个字符。
例如,正则表达式[abc]可以匹配字符串a、b或c。
3. 量词:用于指定匹配的次数。
例如,正则表达式a{3}可以匹配3个连续的a字符。
4. 选择符:用竖线|表示,可以匹配多个模式中的一个。
例如,正则表达式a|b可以匹配字符串a或b。
5. 边界匹配:用于限定匹配的位置。
例如,^表示匹配字符串的开头,$表示匹配字符串的结尾。
三、常用的正则表达式示例1. 匹配手机号码:^\d{11}$2. 匹配邮箱地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$3. 匹配身份证号码:^\d{17}[\dXx]$4. 匹配URL地址:^[a-zA-Z]+://[^\s]*$5. 匹配日期:^\d{4}-\d{2}-\d{2}$6. 匹配IP地址:^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$四、常用的正则表达式工具1. 在Python中,可以使用re模块来操作正则表达式。
2. 在JavaScript中,可以使用RegExp对象来操作正则表达式。
3. 在文本编辑器中,可以使用正则表达式进行查找和替换。
五、常见问题解答问:如何匹配一个或多个任意字符?答:可以使用点号.来匹配一个任意字符,使用点号加上量词*来匹配一个或多个任意字符。
正则表达式基础入门教程
正则表达式基础入门教程时间:2009-04-22 07:15:33来源:网络作者:未知点击:0次负向位置指定前面我们提到过怎么查找不是某个字符或不在某个字符类里的字符的方法(反义)。
但是如果我们只是想要确保某个字符没有出现,但并不想去匹配它时怎么办?例如,如果我们想查找这样的单词--它里面出现了字母q,但是q后面跟的不是字母u,我们可以尝试这样:\b\w*q[^u]\w*\b匹配包含后面不是字母u的字母q的单词。
但是如果多做测试(或者你思维足够敏锐,直接就观察出来了),你会发现,如果q出现在单词的结尾的话,像Iraq, Benq,这个表达式就会出错。
这是因为[^u]总是匹配一个字符,所以如果q是单词的最后一个字符的话,后面的[^u]将会匹配q后面的单词分隔符(可能是空格,或者是句号或其它的什么),后面的\w+\b将会匹配下一个单词,于是\b\w*q[^u]\w*\b就能匹配整个Iraq fighting。
负向位置指定能解决这样的问题,因为它只匹配一个位置,并不消费任何字符。
现在,我们可以这样来解决这个问题:\b\w*q(?!u)\w*\b。
零宽负向先行断言(?!exp),只会匹配后缀exp不存在的位置。
\d{3}(?!\d)匹配三位数字,而且这三位数字的后面不能是数字。
同理,我们可以用(?<!exp),零宽负向后行断言来查找前缀exp不存在的位置:(?<![a-z])\d{7} 匹配前面不是小写字母的七位数字(实验时发现错误?注意你的"区分大小写"先项是否选中)。
一个更复杂的例子:(?<=<(\w+)>).*(?=<\/\1>)匹配不包含属性的简单HTML标签内里的内容。
(<?(\w+)>) 指定了这样的前缀:被尖括号括起来的单词(比如可能是<b>),然后是.*(任意的字符串),最后是一个后缀(?=<\/\1>) 。
正则表达式入门教程
正则表达式入门教程以下内容经正则表达式学习网授权≈正则表达式是什么?≈在使用电脑进行各种文字处理的时候,我们有时需要查找和匹配一些特殊的字符串,如邮箱地址、验证用户输入的密码是否包含了大小写字母和数字,查找HTML源文档中的所有web地址等等,这时我们就可以使用到正则表达式。
正则表达式本身是一个“字符串”,通过这个“字符串”去描述字符组成规则。
如abbb、abbbb、abbbbb这三个字符串包都是以a字母开头a后面有一个b字母,而且b字母重复了3到5次。
用正则表达式来描述就是ab{3,5},b{3,5}表示b字符重复3到5次。
如果我们想匹配ababab这样的字符串,ab重复了3次,用正则表达式表示就是(ab){3},圆括号()是正则表达式中的分组。
大家如果想亲自感受正则表达式的使用效果,可以打开正则表达式测试系统。
如以上实例所展示的,正则表达式为人们提供了一种简单易用的字符处理工具。
它在目前主流的文字处理软件中都提供了良好的支持(不仅是编程软件,还有文字处理软件Uedit32、EditPlus,网页采集软件火车头等等),它具有很强的通用性,学好它,我们可以达一变应万变的效果。
≈正则表达式详解≈像{},()这种在正则表达式中,具有特殊含义的字符称为元字符(metacharacter)。
元字符是组成正则表达式的基本元素,在正则表达式经常使用的元字符不是很多,概念容易理解。
大家只要花30来分钟学完我们的教程基本上就可以完全掌握。
为了您能更快速的掌握正则表达式,我们为您推荐一款方便的正则表达式在线测试工具“RegExr”,(RegExr由免费提供)。
保留字符匹配字符本身匹配字符数量匹配字符位置分组匹配表达式选项保留字符(返回目录)在正则表达式中,有一些字符在正则表达式中具有特殊含义被称保留字符,如*表示前一个元素可以重复零次或多次,要匹配“*”字符本身使用\*,半角句号.匹配除了换行符外的所有字符,要匹配“.”使用\.。
正则表达式详解
正则表达式详解正则表达式1.什么是正则表达式简单的说,正则表达式是一种可以用于文字模式匹配和替换的强有力的工具。
是由一系列普通字符和特殊字符组成的能明确描述文本字符串的文字匹配模式。
正则表达式并非一门专用语言,但也可以看作是一种语言,它可以让用户通过使用一系列普通字符和特殊字符构建能明确描述文本字符串的匹配模式。
除了简单描述这些模式之外,正则表达式解释引擎通常可用于遍历匹配,并使用模式作为分隔符来将字符串解析为子字符串,或以智能方式替换文本或重新设置文本格式。
正则表达式为解决与文本处理有关的许多常见任务提供了有效而简捷的方式。
正则表达式具有两种标准:·基本的正则表达式(BRE –Basic Regular Expressions)·扩展的正则表达式(ERE – Extended Regular Expressions)。
ERE包括BRE功能和另外其它的概念。
正则表达式目前有两种解释引擎:·基于字符驱动(text-directed engine)·基于正则表达式驱动(regex-directed engine)Jeffery Friedl把它们称作DFA和NFA解释引擎。
约定:为了描述起来方便,在本文中做一些约定:1.本文所举例的所有表达时都是基于NFA解释引擎的。
2.正则表达式,也就是匹配模式,会简写为Regex。
3. Regex的匹配目标,也就是目标字符串,会简写为String。
4.匹配结果用会用黄色底色标识。
5.用1\+1=2 括起来的表示这是一个regex。
6.举例会用以下格式:testThis is a test会匹配test,testcase等2.正则表达式的起源正则表达式的”祖先”可以一直上溯至对人类神经系统如何工作的早期研究。
Warren McCulloch 和 Walter Pitts 这两位神经生理学家研究出一种数学方式来描述这些神经网络。
[精品]正则表达式基础知识(图文).doc
正则表达式基础知识(图文)2008-10-23 19:46我们先从简单的开始。
假设你要搜索一个包含字符"cal”的字符串,搜索用的正则表达式就是“询”。
如果搜索对大小写不敏感,单讨'catalog,\ "Catherine"、"sophisticated'"都可以匹配。
也就是说:th则表达式:cat匹配:cat. cataIog. Cather ine. sophi sti cated1・1句点符号假设你在玩英文拼字游戏,想要找出三个字母的单词,而且这些单词必须以“t”字母开头,以“n”字母结束。
另外,假设有一本英文字典,你可以用正则表达式搜索它的全部内容。
要构造出这个正则表达式,你可以使用一个通配符——句点符号“.”。
这样,完整的表达式就是“5”,它匹配“伽”、“ten”、5n”和“ion”,还匹配伽”、“ipn”甚至“in”,还有其他许多无意义的组合。
这是因为句点符匕匹配所仔宇符,包括空格、Tab 字符甚至换行符:正则表达式:t.n匹©己:tani Teni tini tone t m t#ni tpni 尊1. 2方括号符号为了解决句点符号匹配范囤过于广泛这一问题,你可以在方括号(“[]”)里血指定看來有意义的字符。
此时,只有方括号里面指定的字符才参与匹配。
也就是说,正则表达式“t[aeio]n"只匹配“tan”、“Ten”、“tin" 和%onj但"ToorT不匹配,因为在方括号之内你只能匹配单个字符:正则表达式:t[aeio]n 匹配:tani Twru tint ton1.3 “或”符号如果除了上面匹配的所有单词之外,你还想要匹配"toon”,那么,你可以使用T操作符。
T操作符的基本意义就是“或''运算•要匹配“toon”,使用-t(alcliloloo)n-正则表达式。
《正则表达式》课件
THANKS
感谢观看
后查
后查概述
后查是在匹配之后进行的条件判断,用于确定是否满 足某些特定条件。
后视断言
(?<=...) 用于匹配前面紧挨着特定字符或字符串的文 本。
后顾断言
(?<!...) 用于匹配前面不跟随特定字符或字符串的文本 。
非捕获组
非捕获组概述
01
非捕获组是一种特殊类型的组,用于将多个字符组合成一个整
体,但不捕获匹配的文本。
《正则表达式》PPT课件
CATALOGUE
目 录
• 正则表达式简介 • 正则表达式基础 • 正则表达式进阶 • 正则表达式应用实例 • 正则表达式的局限性与未来发展 • 总结与回顾
01
CATALOGUE
正则表达式简介
什么是正则表达式
总结词
正则表达式是一种用于匹配字符串中特定模式的工具。
详细描述
02
CATALOGUE
正则表达式基础
元字符
01
匹配任何字符:`.`
02
匹配换行符:`n`
03
匹配单词边界:`b`
04
匹配开始和结束位置:`^`和`$`
字符类
01 02 03 04
匹配单个字符:`[a]` 匹配字符范围:`[a-z]`
排除字符:`[^a]` 预定义字符类:`d`(数字)、`w`(单词字符)、`s`(空白字符)
正则表达式的历史与发展
要点一
总结词
正则表达式起源于20世纪50年代,随着计算机技术的发展 而不断完善。
要点二
详细描述
正则表达式起源于20世纪50年代,最早由数学家阿兰·图灵 提出。随着计算机技术的发展,正则表达式逐渐成为文本 处理领域的标准工具。在实践中,正则表达式的语法和规 则不断得到完善和扩展,以适应更广泛的应用场景和需求 。如今,正则表达式已经成为许多编程语言的标准库之一 ,被广泛应用于各种文本处理任务中。
正则表达式详解
正则表达式使用详解较为常用的元字符包括:“+”,“*”,以及“?”。
“+”元字符规定其前导字符必须在目标对象中连续出现一次或多次。
“*”元字符规定其前导字符必须在目标对象中出现零次或连续多次。
“?”元字符规定其前导对象必须在目标对象中连续出现零次或一次。
有时候不知道要匹配多少字符。
为了能适应这种不确定性,正则表达式支持限定符的概念。
这些限定符可以指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。
{n} n 是一个非负整数。
匹配确定的 n 次。
例如,'o{2}' 不能匹配 "Bob" 中的'o',但是能匹配 "food" 中的两个 o。
{n,} n 是一个非负整数。
至少匹配 n 次。
例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。
'o{1,}' 等价于 'o+'。
'o{0,}' 则等价于 'o*'。
{n,m} m 和 n 均为非负整数,其中n <= m。
最少匹配 n 次且最多匹配 m 次。
例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。
'o{0,1}' 等价于 'o?'。
请注意在逗号和两个数之间不能有空格。
在对如何使用正则表达式有了初步了解之后,我们来看一下其它几个重要的元字符的使用方式。
\s:用于匹配单个空格符,包括tab键和换行符;\S:用于匹配除单个空格符之外的所有字符;\d:用于匹配从0到9的数字;\w:用于匹配字母,数字或下划线字符;\W:用于匹配所有与\w不匹配的字符;. :用于匹配除换行符之外的所有字符。
(说明:我们可以把\s和\S以及\w和\W看作互为逆运算)“^”定位符规定匹配模式必须出现在目标字符串的开头“$”定位符规定匹配模式必须出现在目标对象的结尾“\b”定位符规定匹配模式必须出现在目标字符串的开头或结尾的两个边界之一“\B”定位符则规定匹配对象必须位于目标字符串的开头和结尾两个边界之内,为了能够方便用户更加灵活的设定匹配模式,正则表达式允许使用者在匹配模式中指定某一个范围而不局限于具体的字符。
正则表达式用法详解
正则表达式⽤法详解正则表达式之基本概念在我们写页⾯时,往往需要对表单的数据⽐如账号、⾝份证号等进⾏验证,⽽最有效的、⽤的最多的便是使⽤正则表达式来验证。
那什么是正则表达式呢?正则表达式(Regular Expression)是⽤于描述⼀组字符串特征的模式,⽤来匹配特定的字符串。
它的应⽤⾮常⼴泛,特别是在字符串处理⽅⾯。
其常见的应⽤如下:验证字符串,即验证给定的字符串或⼦字符串是否符合指定的特征,例如,验证是否是合法的邮件地址、验证是否是合法的HTTP地址等等。
查找字符串,从给定的⽂本当中查找符合指定特征的字符串,这样⽐查找固定字符串更加灵活。
替换字符串,即查找到符合某特征的字符串之后将之替换。
提取字符串,即从给定的字符串中提取符合指定特征的⼦字符串。
第⼀部分:正则表达式之⼯具正所谓⼯欲善其事必先利其器! 所以我们需要知道下⾯⼏个主要的⼯具:第⼆部分:正则表达式之元字符正则表达式中元字符恐怕是我们听得最多的了。
元字符(Metacharacter)是⼀类⾮常特殊的字符,它能够匹配⼀个位置或者字符集合中的⼀个字符。
如.、\w等都是元字符。
刚刚说到,元字符既可以匹配位置,也可以匹配字符,那么我们就可以通过此来将元字符分为匹配位置的元字符和匹配字符的元字符。
A匹配位置的元字符---^、$、\b即匹配位置的元字符只有^(脱字符号)、$(美元符号)和\b这三个字符。
分别匹配⾏的开始、⾏的结尾以及单词的开始或结尾。
它们匹配的都只是位置。
1.^匹配⾏的开始位置如^zzw匹配的是以"zzw"为⾏开头的"zzw"(注意:我这⾥想要表达的是:尽管加了⼀个^,它匹配的仍是字符串,⽽不是⼀整⾏!),如果zzw不是作为⾏开头的字符串,则它不会被匹配。
2.$匹配⾏的结尾位置如zzw$匹配的是以"zzw"为⾏结尾的"zzw"(同样,这⾥$只是匹配的⼀个位置,那个位置是零宽度,⽽不是⼀整⾏),如果zzw不是作为⾏的结尾,那么它不会被匹配。
正则表达式教程
正则表达式教程正则表达式(Regular Expression),又称规则表达式,是一种用来描述字符序列的强大工具。
它主要用于字符串的模式匹配、查找替换以及验证输入等各种操作。
正则表达式由一些字符和特殊字符组成,通过组合这些字符来指定一个匹配模式。
在正则表达式中,使用一些特殊字符来表示不同的意义,比如:1. 元字符(Metacharacters):用于描述模式的特殊字符,如"."表示匹配除换行符之外的任意字符,"[]"表示匹配括号内的任意一个字符等。
2. 量词(Quantifiers):用于描述匹配次数的特殊字符,如"*"表示匹配前一个字符0次或多次,"+"表示匹配前一个字符1次或多次,"?"表示匹配前一个字符0次或1次等。
3. 转义字符(Escape Characters):用于将特殊字符转义为普通字符,如"\."表示匹配真正的点字符,而不是元字符"."表示的任意字符。
正则表达式可以通过各种编程语言来实现,常见的有Python、JavaScript、Java、Perl等。
不同的编程语言对正则表达式的支持程度不同,但基本的语法规则是相通的。
使用正则表达式,可以实现很多常见的操作,比如:1. 匹配字符串:通过正则表达式来判断一个字符串是否与某个模式匹配。
2. 查找替换:可以在一个字符串中查找匹配某个模式的部分,并进行替换。
3. 分割字符串:可以根据某个模式将一个字符串分割成多个部分。
4. 验证输入:可以用正则表达式对用户输入的数据进行验证,比如邮箱、手机号等。
5. 提取信息:可以提取一个字符串中符合某个条件的部分,比如提取出所有URL链接。
正则表达式是一个非常强大和灵活的工具,但也经常被人们认为难以理解和编写。
因此,掌握正则表达式的基本语法和常用操作是很有必要的。
正则表达式详解
匹配一个数字字符。等价于[0-9]。
\D
匹配一个非数字字符。等价于[^0-9]。
\f
匹配一个换页符。等价于\x0c和\cL。
\n
匹配一个换行符。等价于\x0a和\cJ。
\r
匹配一个回车符。等价于\x0d和\cM。
\s
匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。
最简单的元字符是点,它能够匹配任何单个字符(注意不包括换行符)。假定有个文件test.txt包含以下几行内容:
he is arat
he is in a rut
the food is Rotten
I like root beer
我们可以使用grep命令来测试我们的正则表达式,gre处匹配表达式的所有行显示出来。命令
正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
?
匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“does”或“does”中的“do”。?等价于{0,1}。
{n}
n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。
{n,}
n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
grep教程
——正则表达式的应用
grep简介
是Global search regular expression (RE) and Print out the line的缩写 强大的文本搜索工具,使用正则表达式搜索文 本,并打印匹配的行 在一个或者多个文件中搜索字符串模式,搜索 的结果输出到屏幕,不影响文件内容
awk命令
① ② ③
④
⑤
print “$1= ”, $1 printf:与c语言的printf类似 next:读取下一条记录并处理 nextfile:读取文件列表的下一个文件 exit:awk停止执行并跳出。如果有END存在, awk会执行END的actions
awk语句
赋值语句 流程控制结构
基本sed编辑命令
p = a\ i\ d n c\ s r w 打印匹配行 显示文件行号 在定位行号后附加新文本 在定位行号后插入新文本 删除定位行 sed –n ‘2,3’p test.txt sed –n ‘/movie/’p temp.txt sed –e ‘/music/=’ temp.txt sed ‘/jack/ \a “here add new line”’p temp.txt sed ‘4 \i “here add new line”’p temp.txt sed ‘/music/’d temp.txt
awk_pattern的格式
1.
正则表达式 /regexp/
① ② ③
通用的正则元字符: [] ^ $ . | () * +是awk特有的元字符,匹配其前的单个字符一次以上 ?也是awk特有的元字符,匹配其前的单字符0/1次
举例:awk ‘/*\$0\.[0-9][0-9+.*/’ input_file 2. 布尔表达式 “==”,“>”, “~/regexp/”,“&&”, “||” 举例
VIM教程
——linux下最常用的文本编辑器
VIM编辑器
三种模式:各种模式之间切换
从命令行模式到插入模式:按下i键 从命令行模式到附加模式:按下a键 返回命令行模式:按下ESC键 保存并退出:在命令行模式按下:wq
退出编辑
不保存退出:在命令行模式按下:q! 保存:在命令行模式按下:w 另存为其他文件名:按下:w filename
分别锚定一个单词的起始 ‘\<grep’匹配以grep开始的单词 和结束 ‘grep\>’匹配以grep结束的单词 x正好重复5次的行、至少重复5次的行、重复次数在5-10次之 间的行
x\{5\}, x\{5,\},x\{5,10\} \w = [A-Za-z0-9] \W=[^A-Za-z0-9] \bgrep\b
练习题:这些命令能干什么?
sed ‘s/\.$//g’ temp.txt sed –e ‘/abcd/d’ temp.txt sed ‘s/ */ /g’ temp.txt
sed ‘s/^*+*+*//g’ temp.txt
sed ‘s/\.*+*+*/*+/g’ temp.txt sed ‘/^$/d’ temp.txt
从另一个文本中读取下一行, sed ‘/movie/n temp2.txt’ temp.txt 并附加到下一行 用新文本替换定位文本 sed ‘4 \c “i like it”’ temp.txt 用替换模式替换相应模式 从另一个文本中读取文本 写文本到另一个文件 sed ‘s/source/okstr/”add before” &/p’ temp.txt sed ‘/name/r temp2.txt’ temp.txt sed ‘s/name/”my ” &/w temp2.txt’ temp.txt
grep用法
grep *option+ ‘pattern’ input_files
常用grep命令选项
-? -c -f file -i -q -l -l ?为数值,同时显示匹配行的前后? grep -2 ‘grep’ test.txt同时显示匹配行的 行 前后2行 --count,只打印匹配行的行数,而 不输出匹配行 从输入文件中提取模式 --ignore-case,忽略大小写 --quiet,取消显示 仅打印匹配模式的文件清单 打印不匹配模式的文件清单 --line-number,在匹配行前打印行 号 --silent,不显示错误信息 --revert-match,只显示不匹配的行 --word-regexp,如果被\<和\>引用, 就把表达式作为一个单词搜索
awk脚本的运行机制
1. 2. 3. 4.
5. 6.
如果存在BEGIN区块,执行其中的actions 从输入文件中读取一行,称为读入一条记录 将读入的记录按照分隔符(FS/IFS)分割为多个字段, 依次为$1,$2,…., 而$0表示整条记录。 将当前输入记录与awk_pattern相比较,如果匹配则 执行actions,如果不匹配则跳过读入下一条记录, 重复执行3,4,直到文件尾 awk把输入文件的数据读入内存,然后操作内存中的 输入数据副本,不会修改输入文件的内容 awk总是输出到标准输出,如果需要输出到文件,可 采用重定向
匹配所有单个(非)字母和数字字符
只匹配单词grep,不匹配egrep等
练习题:这些命令都能干啥?
1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
11.
12. 13. 14.
ls –l | grep ‘^a’ grep ‘test’ d* grep ‘test’ aa bb cc grep ‘*a-z]\{5\-’ aa grep ‘w\(es\)t.*\1’ aa grep ‘^n’ datafile grep ‘4$’ datafile grep ‘5\..’ datafile grep ‘\.5’ datafile grep ‘^*wesn+’ datafile grep ‘*A-Z][A-Z] [A-Z+’ datafile grep ‘ss* ’ datafile grep ‘*a-z]\{9\-’ datafile grep ‘\<[a-z].*n\>’ datafile
生物信息学基础教程
第4讲:正则表达式教程容
正则表达式
正则表达式的定义与表示方法 正则表达式中的元字符(metacharacter)
VIM编辑器 grep命令 sed编辑器 awk工具
正则表达式
所谓正则表达式(regular expression, RE), 指的是符合某种模式的字串,常 用于从文件中或者字符串中查找和替换 某些符合某种规则的字串
3.
awk脚本的组成
可由一条或多条awk_cmd组成,两条awk_cmd 之间一般以NEWLINE分割 awk_cmd由两部分组成:awk_pattern { actions } awk命令的一般形式
awk ‘BEGIN , actions - awk_pattern1 , actions - … awk_patternN ,actions- END , actions -’ input_file 其中BEGIN 和END模块是可选的
VIM编辑功能
光标跳到文件头:命令行模式下按2下g 光标跳到文件尾:按下:$ 光标跳到行首:按下^ 光标跳到行末:按下$ 跳到100行:按下100g
VIM查找功能
底行模式下输入/pattern/回车,对应符合 pattern的文本就会显示为高亮
底行模式下输入:m,n/pattern/,就会在第 m行到第n行查找pattern并高亮显示
awk内部变量
自动内部变量
① ② ③ ④ ⑤ ⑥
NF:当前输入字段的字段数 NR:当前输入文件已经被读过的行数 FNR:所有输入文件中已经被读过的行数 FILENAME:当前输入文件的文件名 ARGC:命令行参数个数,输入文件数目+1 ARGIND:当前处理文件在ARGV内的索引
sed ‘s/^.//g’ temp.txt
sed ‘s/COL\(…\)//g’ temp.txt sed ‘s/^\///g’ temp.txt
AWK教程
——文件模式提取教程
AWK简介
Linux下的awk有三个版本:awk、nawk、 gawk,一般所说的awk是指/bin/awk,也 就是gawk (GNU awk) awk的功能:
‘*grep’匹配所有0个或多个空格紧跟grep的行
匹配一个指定范围的字符 ‘*Gg+rep’匹配包含Grep或grep的行 匹配不在指定范围内的一 ‘*^A-FH-Z+rep’匹配所有不在A-F和H-Z范围内字符后跟rep的行 个字符 标记匹配字符 ‘\(love\)’中可以匹配love,且love被标记为\1
基于指定规则从文件或者字符串中分解抽提 信息 基于指定的规则输出数据
awk的三种执行方式
1.
2.
awk *option+ ‘awk_script’ input_file1 *input_file2 …+
将awk_script放入脚本文件并以#!/bin/awk –f 作为首 行,并赋予该脚本可执行权限,然后在shell下调用该 脚本名称执行awk_script的内容:awk_file input_file 将所有awk_script放入一个单独的脚本文件,然后用 awk –f awk_file input_file(s)执行脚本
-n
-s -v -w
grep正则表达式元字符