正则表达式

上一篇 / 下一篇  2007-11-28 12:48:19 / 个人分类:Linux

     正则表达式的语法与shell通配符看起来有些相似,但这只是表面的,它们是根本不同的两种类型。shell通配符用于文件名,而正则表达式通常被用来查找文本的模式,以及对文本流执行“搜索-替换”操作以及其它功能。为了防止shell将其展开,常常给正则表达式加上引号。
(P)q BG3D3b0
^ 只匹配行首

ux(]xx0k } D0P0$ 只匹配行尾
 
. 与任何单字符匹配,在功能上等价于shell中的“?”
51Testing软件测试网(U9]C8J5D5w4T
?只一个单字符后紧跟?,匹配0个或1个此单字符。使用时需要加上转义符
51Testing软件测试网M5LV.Cq!?uy)V!?
+ 只一个单字符后紧跟+,匹配1个或多个此单字符。使用时需要加上转义符

o Rw2bMQj0* 只一个单字符后紧跟*,匹配0个或多个此单字符,见下面的例子:
4f E-}4LeoW0ab*c(与 abbbbc 匹配但不与 abqc 匹配)51Testing软件测试网0y,RM)k(u&J
ab*c(与 abc 匹配但不与 abbqbbc 匹配)
q%_:} Y%~ ^0ab*c(与 ac 匹配但不与 cba 匹配)51Testing软件测试网 [#p+Za%?1g|M!q"X|
b[cq]*e(与 bqe 匹配但不与 eb 匹配)51Testing软件测试网ZV mAcz`t
b[cq]*e(与 bccqqe 匹配但不与 bccc 匹配)51Testing软件测试网 fv*ki Q%SMv
b[cq]*e(与 bqqcce 匹配但不与 cqe 匹配)51Testing软件测试网C-T] qz g6I
b[cq]*e(与 bbbeee 匹配)
!N\ uBe8|0.*(与任何字符串匹配)
S2]3G8eCPo3[(eR5M K0foo.*(与以 foo 开始的任何字符串相匹配)
51Testing软件测试网3^zjk/X\{u
[ ] 与列在方括号内的字符相匹配。方括号内可以是一个单字符,也可以是字符序列。可以使用-表示[ ]内字符序列范围,如用[1-5]代替[12345]。注意方括号内部的语法不同于正则表达式其它部分的语法,例如,[.]表示与字符.匹配51Testing软件测试网 h-a$U5je!~#AtO)D
[^] 与未列在方括号内的任意字符匹配。注意在正则表达式中使用 [^],而在shell通配符中使用 [!]
 
pattern\{n\} 匹配模式出现n次。

6] a r.Z.f|0pattern\{n,\} 匹配模式出现最少n次。

YMw;gu-^}o0pattern\{n,m} 匹配模式出现n到m次之间,n , m为0 - 2 5 5中任意整数。
 
\(pattern\)+  匹配模式出现的一次或多次。
 
pattern\|pattern 匹配前面或后面的表达式
 
见下面的例子:
 
grep 't1\{1\}t' a1或 grep "t1\{1\}t" a1 返回 t1t
D]@,L5x+di.W1z$I0grep 't1\{2,\}t' a1或grep "t1\{2,\}t" a1返回 t111t
xt@R6H;g6YD*a6a0grep 't1\{1,4\}t' a1或grep "t1\{1,4\}t" a1返回t1t,t111t
 
注意:在基本语法中使用'?'、'+'、'|'、'('、')'、'{'、'}'要转义(\),但在扩展的正则表达式语法中则不需要,因此,如果要将它们解释为一般字符,就必须转义。

TAG: Linux

 

评分:0

我来说两句

Open Toolbar