首页 > 代码库 > grep及扩展正则表达式

grep及扩展正则表达式

正则表达式有两类,分为基本正则表达式和扩展正则表达式,是使用命令egrep来使用扩展正则表达式,它与grep很多功能相同,仅在元字符上实现了些扩展,在元字符的表示上与基本正则表达式略不同。

1. 命令格式:

egrep [option] pattern file

2. 命令功能:

用于过滤/搜索的特定字符。可使用扩展正则表达式能多种命令配合使用,使用上十分灵活 。

3. 命令参数:

egrep等同于grep -E选项

扩展正则表达式的元字符:

字符匹配:

. #匹配单个非换行符的字符 如:‘gr.p‘匹配gr后接一个任意字符,然后是p。

[] #匹配一个指定范围内的字符,如‘[Gg]rep‘匹配Grep和grep。

[^] #匹配一个不在指定范围内的字符,如:‘[^A-FH-Z]rep‘匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。

次数匹配:

* #匹配零个或多个先前字符。如:‘*grep‘匹配所有一个或多个空格后紧跟grep的行。

? #匹配其前面出现的字符0次或1次。如:‘x\?y‘匹配x出现一次或者不出现的行。

+ #匹配其前面的字符出现至少一次。如: ‘x\+y‘匹配x出现最少一次的行。

{m} #匹配其前面的字符至少m次; 如:‘0\{5\}‘匹配包含5个o的行。

{m,} #重复字符x,至少m次,如:‘o\{5,\}‘匹配至少有5个o的行。

{m,n}:匹配其前面的字符至少m次,至多n次; o\{5,10\}‘匹配至少有5-10个o的行。

.* :匹配任意长度的任意字符

位置锚定:

$ #行尾锚定 如:‘grep$‘匹配所有以grep结尾的行。

^ #行首锚定 如:‘^grep‘匹配所有以grep开头的行。

^$ #空白行:行首与到行尾 特殊环境能用到

\< #单词 词首 锚定,也可以用\b。 如: ‘ \<grep‘ ‘\bgrep‘只匹配grep单词开头的行。

\> #词尾锚定,也可以用\b。如: ‘grep/>‘‘ grep/b‘ 只匹配grep单词结尾的行。

/< pattern/> #单词锚定,只匹配出现pattern单词的行和‘ /b pattern/b‘是一样的效果。

\b #单词锁定符,如: ‘\bgrep\b‘只匹配grep。 同/< pattern/>

分组

() #将关键字和元字符在里面分组,也支持后向引用。

后向引用 :模式中,如果使用\(\)实现了分组,在某行文本的检查中,如果括号中的模式匹配到了某内容,其内容 后面的模式中可以被引用; \1,\2,\3 第一个括号,第二个括号,第三个括号 模式自左而右,引用第N个左括号以及与其匹配右括号之间的模式匹配到的内容。

4.不同处 

紧紧在元字符表示上略有不同:

在次数匹配的:?,+,{m},{m,}{m,n},分组()等等元字符表示上略有不同,使用方法都是一样的,大家可以参考另一篇博文《grep命令及基本正则表达式》

转载:http://www.tuicool.com/articles/iAbER3

grep及扩展正则表达式