正则表达式学习笔记
正则表达式1、正则表达式的概念如果我们对特定的某个字符操作的话,相对来说很简单,比如tom,mary。如果我需要操作的这些字符,他们不是具体的某些字符,比如第一个字符是字母,第二个是数字,第三个是特殊字符等。在我们现实生活中,我们可以使用一些特殊的字符表示,比如△字母,○表示数字,表示特殊字符。 2、Grep的基本用法 Grep也支持正则表达式,因为grep比较简单,所以我们就用grep来让大家理解什么是正则表达式。 Grep的作用是用来过滤含有特定字符的行。 用法:grep 关键字 file 因为我们现在过滤的是比较简单的一个关键字。但如果说我要过滤一些特定字符的文件该如何完成? 我们可以这样来做:grep △○ file 纸上可以这样写,但是计算机并不识别这些符号△○,所以就引入元字符的概念。 3、正则表达式元字符: 文件aa内容:
^ 表示行开头,下图表示匹配以tom开头的行
$ 表示行尾,下图表示匹配以tom结尾的行 . 表示单个字符,可以匹配除了换行符之外的所有字符。下图表示匹配包含tom及后面的任意三个字符的行: * 表示其前面的字符可以出现任意次,包括0次
+ 表示其前面的字符至少要出现一次:
这个命令里面使用了-E选项,意思是使用扩展的grep,因为grep所能使用的元字符有限。
元字符*和+都是贪婪型的,即最长匹配。见下图: 有时候我们需要最短匹配,又叫懒惰型匹配。匹配时只要在*后面加?即可。 ?表示其前面的字符可以有,也可以没有。 注意:grep不支持+和? 这些元字符,如果要使用,需要扩展的grep(egrep或grep -E)。 [] 表示匹配一个字符,出现在[]里面的字符都是“或”的关系。 ^如果是出现在[]外面的话,表示开头的意思,如果出现在[]里面的话,表示否定的意思。 刚才^和$,表示匹配行的开头和结尾,如果要匹配单词的开头,要使用:&; &; 表示匹配单词的结尾: btomb 表示只匹配单词为tom的行: 正则表达式中,也可以做标签,如果匹配模式中给某一部分做了一个标签,我们在后面就可以直接引用他。如果我们想对某一部分做标签的话,只要使用()括起来就可以了,引用就使用n(n表示一个数字)。比如第一个被()引起来的部分,引用就使用1。 {n} 表示匹配其前面的字符n次,如下图: {n,} 表示匹配其前面的字符至少n次,如下图: {n,m} 表示匹配其前面的字符至少n次,至多m次,如下图: [0-9] 表示匹配数字 d 也可以表示匹配数字: D 表示匹配非数字 s 表示空格或tab S 表示不能是空格或tab w 表示任意字符(大小写字母、数字、下划线) W 表示不能是字母、数字和下划线 正则表达式也支持国际字符: [[:digit:]]表示数字 [[:alpha:]] 表示字母,包括大小写 [[:upper:]] 表示大写字母 [[:lower:]] 表示小写字母 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |