分类: LINUX
2012-05-29 10:00:05
正则表达式元字符
元字符是这样一类字符,它们表达的是不同于字面本身的含义。正则表达式元字符是由各种执行模式匹配操作的程序来解析,例如:sed、grep、awk等。
常用正则表达式的元字符如下:
元字符 | 功能 | 实例 | 匹配结果 | 备注 |
^ | 行首定位符 | /^test/ | 匹配所有以test开头的行 | 空格、TAB等也是作为字符进行匹配的。 |
$ | 行尾定位符 | /test$/ | 匹配所有以test结尾的行 | |
. (点) | 匹配除“/n”之外的任何单个字符 | /t..t/ | 匹配包含一个t,后跟两个字符,在跟一个t的行。 | 任意单个字符包含空格和TAB键。 即:“t t” 也是满足匹配条件的。 若要匹配包括“/n”在内的任意字符,请使用诸如“[/s/S]”之类的模式。 |
* | 零次或多次匹配前面的字符或子表达式 | /t*est/ | 匹配包含0个或者多个t后跟est的行。可以匹配:est、test、ttest | |
+ | 一次或多次匹配前面的字符或子表达式 | /t+est/ | 匹配包含1个或者多个t后跟est的行。可以匹配:test、ttest。字符串“est”则无法进行匹配了。 | |
? | 零次或者一次匹配前面的字符串或者子表达式 | /t?est/ | 匹配包含0个或者1个t后跟est的行。可以匹配:test、est。 | ttest 也是符合匹配标准的,因为ttest字符串中包含整个test。 当此字符紧随任何其他限定符(*、+、?、{n}、{n,}、{n,m})之后时,匹配模式是“非贪心的”。“非贪心的”模式匹配搜索到的、尽可能短的字符串,而默认的“贪心的”模式匹配搜索到的、尽可能长的字符串。例如,在字符串“oooo”中,“o+?”只匹配单个“o”,而“o+”匹配所有“o”。 |
[] | 匹配一组字符中的任一个 | /[Tt]est/ | 匹配包含Test或者test行 | |
[x-y] | 匹配指定范围内的一个字符 | /[A-Z]est/ | 匹配后面跟着est的一个A至Z之间的字符。 | [0-9]:用来匹配任意数字 [A-Za-z]:用来匹配任意字母 |
[^] | 匹配不在指定组内的字符 | /[^A-Z]/ | 匹配不在范围A至Z之间的任一个字符 | |
/ | 用来转义元字符 | /test/*/ | 匹配包含test,后面跟一个*号的所有行。 | ////用来匹配“/”符号自身 |
/< | 词首定位符 | // | 匹配包含以love开头的词的行。如:love、lover | vi和grep支持 |
/> | 词尾定位符 | /love/>/ | 匹配包含以love结尾的词的行。 如:aalove |
vi和grep支持 |
/(pattern/) | 匹配模式pattern,并将之存储在寄存器中,供之后使用。 | //(love/)able /1r/ | 最多可以使用9个标签,模式中最左边的标签是第一个。例如:模式love被保存为标签1,用/1表示。左边这个例子中,查找串是一个loveable 后跟 lover的长串。 | sed、vi、grep支持。 例如: sed “s//(love/)//1able/” 功能是将文件中的love替换成loveable。 |
x/{m/} 或 x/{m,/} 或 x/{m,n/} |
字符x的重复出现; m次,至少m次,至少m次且不超过n次。 |
o/{5,10/} | 匹配包含5-10个连续的字母o的行。 | vi和grep支持 |
grep支持的正则表达式元字符
元字符 | 功能 | 实例 | 匹配结果 | 备注 |
^ | 行首定位符 | grep “^test” datafile | 打印所有以test开头的行 | |
$ | 行尾定位符 | grep “test$” datafile | 打印所有以test结尾的行 | |
. (点) | 匹配除“/n”之外的任何单个字符 | /t..t/ | 匹配包含一个t,后跟两个字符,在跟一个t的行。 | |
* | 零次或多次匹配前面的字符或子表达式 | /t*est/ | 匹配包含0个或者多个t后跟est的行。可以匹配:est、test、ttest | |
[] | 匹配一组字符中的任一个 | /[Tt]est/ | 匹配包含Test或者test行 | |
[^] | 匹配不在指定组内的字符 | /[^A-Z]/ | 匹配不在范围A至Z之间的任一个字符 | |
/< | 词首定位符 | // | 匹配包含以love开头的词的行。如:love、lover | vi和grep支持 |
/> | 词尾定位符 | /love/>/ | 匹配包含以love结尾的词的行。 如:aalove |
vi和grep支持 |
/(pattern/) | 匹配模式pattern,并将之存储在寄存器中,供之后使用。 | //(love/)able /1r/ | 最多可以使用9个标签,模式中最左边的标签是第一个。例如:模式love被保存为标签1,用/1表示。左边这个例子中,查找串是一个loveable 后跟 lover的长串。 | sed、vi、grep支持。 例如: sed “s//(love/)//1able/” 功能是将文件中的love替换成loveable。 |
x/{m/} 或 x/{m,/} 或 x/{m,n/} |
字符x的重复出现; m次,至少m次,至少m次且不超过n次。 |
o/{5,10/} | 匹配包含5-10个连续的字母o的行。 | vi和grep支持 |