全部博文(37)
分类: LINUX
2011-12-20 11:21:58
基本元字符集及其含义:
^ |
只匹配行首 |
$ |
只匹配行尾 |
* |
一个单字符后紧跟*,匹配0个或多个此单字符 |
[] |
匹配[]内字符。可以是一个单字符,也可以是字符序列。可以使用-表示[ ]内字符序列范围 |
\ |
用来屏蔽一个元字符的特殊含义,\可以使其失去应有意义 |
. |
匹配任意单字符 |
pattern\{n\} |
用来匹配前面pattern出现次数。n为次数 |
pattern\{n,\} |
含义同上,但次数最少为n |
pattern\{n,m\} |
含义同上,但pattern出现次数在n与m之间 |
1.
1.1. 使用句点匹配单字符
句点.可以匹配任意单字符。
例如:
...x..x..x 在ls -l命令中,此格式匹配用户本身,用户组及其他组成员的执行权限。 |
1.2. 在行首以^匹配字符串或字符序列
^只允许在一行的开始匹配字符或单词。
例如:
^d |
使用ls -l命令,并匹配目录。
例如:
^comp..ing |
行首前4个字符为comp,后面紧跟两个任意字符,并以ing结尾。
1.3. 在行尾以$匹配字符串或字符
可以说$与^正相反,它在行尾匹配字符串或字符, $符号放在匹配单词后。
例如:
trouble$ |
匹配以单词trouble结尾的所有行。
例如:
^ $ |
匹配所有空行。
例如:
^.$ |
包含一个字符的行。
1.4. 使用*匹配字符串中的单字符或其重复序列
使用此特殊字符匹配任意字符或字符串的重复多次表达式。
例如:
compu*t 将匹配字符u一次或多次: computer computing compuuuute |
例如:
10133* 匹配 10133aaa 101333aaa 10133333aaa |
1.5. 使用\屏蔽一个特殊字符的含义
有时需要查找一些字符或字符串,而它们包含了系统指定为特殊字符的一个字符。
什么是特殊字符?一般意义上讲,下列字符可以认为是特殊字符:
$.'"*[]^|()\+? |
例如:
\. |
假定要匹配包含字符.的各行,需要屏蔽其含义。
例如:
\*\.pas |
匹配以*.pas结尾的所有文件。
1.6. 使用[]匹配一个范围或集合
使用[]匹配特定字符串或字符串集,可以用逗号将括弧内要匹配的不同字符串分开,但并不强制要求这样做。
使用-表示一个字符串范围。
例如:
[0123456789] 匹配一个数字 [0-9] 匹配一个数字 [a-z] 匹配一个小写字母 [A-Za-z] 匹配一个字母 [A-Za-z0-9] 匹配一个数字或数字 s[a-zA-Z]t 以s开头,中间有一任意字母,以t结尾 [ou].*t 匹配以字母o或u开头,后跟任意一个字符任意次,并以t结尾的任意字母 [A-Za-z]* 匹配所有单词 |
例如:
[^a-zA-Z] 匹配任一非字母型字符 [^0-9] 匹配任一非数字型字符 |
注意^符号的使用,当直接用在第一个括号里,意指否定或不匹配括号里内容。
1.7. 使用\{\}匹配模式结果出现的次数
使用*可匹配所有匹配结果任意次,但如果只要指定次数,就应使用\{\},此模式有三种形式:
pattern\{n\} 匹配模式出现n次。 pattern\{n,\} 匹配模式出现最少n次。 pattern\{n,m} 匹配模式出现n到m次之间,n,m为0-255中任意整数。 |
例如:
A\{2\}B 匹配字母A出现两次,并以B结尾 A\{4,\}B 匹配A至少4次,并以B结尾 A\{2,4\}B 匹配A 2-4次,并以B结尾 |
例如:
[0-9]\{4\}XX[0-9]\{4\} |
具体含义如下:
1匹配数字出现4次。
2后跟代码XX。
3最后是数字出现4次。