正则表达式 入门

检索文本文件:Egrep

文本检索是正则表达式最简单的应用之一 ——许多文本编辑器和文字处理软件都提供了正则表达式检索功能。最简单的就是egrep。在指定了正则表达式和需要检索的文件之后,egrep会尝试用正则表达式来匹配每个文件的每一行,并显示能够匹配的行。

Egrep元字符

行的起始和结束

 脱字符号 ‘^’和美元符号‘$’。在检查一行文本时,‘^’代表一行的开始,‘$’代表结束。正则表达式‘cat’匹配的是一行文本中任意位置的 c+a+t,但是‘^cat’只匹配行首的c+a+t —‘^’用来把匹配文本“锚定”在一行的开头。The same as,‘cat$’只寻找行末的c+a+t,example the line end of scat.。

最好养成按照字符理解正则表达式的习惯。

例如,不要这样理解:‘^cat’匹配以cat开头的行

           而应该这样理解:‘^cat’匹配的是以c作为一行的第一个字符,紧接一个a,紧接一个t的文本。

                            分析‘^cat$’、‘^$’和‘^’

‘^cat$’  文字意义:匹配的条件是,行开头,然后是字母c+a+t,然后是行末尾。

         应用意义:只包含cat的行—没有多余的单词、空白字符……只有‘cat’。

‘^$’     文字意义:匹配的条件是,行开头,然后就是结尾。

         应用意义:空行(没有任何字符,包括空白字符)

‘^’      文字意义:匹配条件是行的开头。

         应用意义:无意义!因为每一行都有开头,所以每一行都匹配—空行也不例外。

Egrep字符组

匹配若干字符之一

假设要搜索一个单词“grey”,但又不确定它是不是写作“gray”,就可以使用正则表达式结构体 [···] 。它允许使用者列出在某处希望匹配的字符,通常被称作字符组。e 匹配字符 e ,a 匹配字符 a ,而正则表达式 [ea] 能匹配 a 或者 e 。所以 gr[ea]y 的意思是:先找到g,跟着是一个r,然后是一个 a 或者 e ,最后是一个y。

在一个字符组中可以列举任意多个字符。例如 [123456] 匹配1到6中的任意一个数字。这个字符组可以作为<H[123456]> 的一部分,用来匹配 <H1>、<H2>、<H3> 等等。在搜索HTML代码的头文件时很有用。

在字符组内部,字符组元字符 ‘-’ (连字符)表示一个范围:<H[1-6]>与<H[123456]>是完全一样的。[0-9]和[a-z]是常用的匹配数字和小写字母的简便方式。混合的方式也被允许,例如 [0123456789abcdefABCDEF]可以写作[0-9a-fA-F](或者也可以写作[A-Fa-f0-9] 顺序无所谓)。这三个正则表达式非常适合用于处理十六进制数字。

排除型字符组

用 [^···] 取代 [^···] ,这个字符组就会匹配任何未列出的字符。例如,[^1-6] 匹配除了1到6以外的任何字符。这个字符组中开头的 ^ 表示“排除”,所以这里列出的不是希望匹配的字符,而是不希望匹配的字符。

猜你喜欢

转载自blog.csdn.net/zhaoyishi/article/details/84205632