正则表达式

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

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

2g9e5U6V9?$O!l0$ 只匹配行尾
 
. 与任何单字符匹配,在功能上等价于shell中的“?”
51Testing软件测试网 J3[9bc k1{DZ!c4wx+[
?只一个单字符后紧跟?,匹配0个或1个此单字符。使用时需要加上转义符

"~G4ko9S'h|7P4B'n s8a u0+ 只一个单字符后紧跟+,匹配1个或多个此单字符。使用时需要加上转义符

't D/} M{5bN0* 只一个单字符后紧跟*,匹配0个或多个此单字符,见下面的例子:51Testing软件测试网];B;C u/@2K0Se
ab*c(与 abbbbc 匹配但不与 abqc 匹配)51Testing软件测试网$z,|)Bq.i(^Hz$Z
ab*c(与 abc 匹配但不与 abbqbbc 匹配)
+R,i%m(r+x/Y0ab*c(与 ac 匹配但不与 cba 匹配)
u3N}lf @d|0b[cq]*e(与 bqe 匹配但不与 eb 匹配)51Testing软件测试网 z B4Dg%|K*r
b[cq]*e(与 bccqqe 匹配但不与 bccc 匹配)
7l!]%yVCu9G0b[cq]*e(与 bqqcce 匹配但不与 cqe 匹配)
"~3@BwID}Qc2LW0b[cq]*e(与 bbbeee 匹配)
6a;uV4`P'no:x,wZ tE0.*(与任何字符串匹配)51Testing软件测试网.E0Y_C*n_
foo.*(与以 foo 开始的任何字符串相匹配)

zAy5SY Z9k&Lro0[ ] 与列在方括号内的字符相匹配。方括号内可以是一个单字符,也可以是字符序列。可以使用-表示[ ]内字符序列范围,如用[1-5]代替[12345]。注意方括号内部的语法不同于正则表达式其它部分的语法,例如,[.]表示与字符.匹配51Testing软件测试网^y~3x/N;E"J
[^] 与未列在方括号内的任意字符匹配。注意在正则表达式中使用 [^],而在shell通配符中使用 [!]
 
pattern\{n\} 匹配模式出现n次。
51Testing软件测试网K-Ex![mm-V
pattern\{n,\} 匹配模式出现最少n次。

"G/mZ5F6Q(jR\0pattern\{n,m} 匹配模式出现n到m次之间,n , m为0 - 2 5 5中任意整数。
 
\(pattern\)+  匹配模式出现的一次或多次。
 
pattern\|pattern 匹配前面或后面的表达式
 
见下面的例子:
 
grep 't1\{1\}t' a1或 grep "t1\{1\}t" a1 返回 t1t51Testing软件测试网mp_?"h
grep 't1\{2,\}t' a1或grep "t1\{2,\}t" a1返回 t111t
4AB)u0s)j6OV7Nvb0grep 't1\{1,4\}t' a1或grep "t1\{1,4\}t" a1返回t1t,t111t
 
注意:在基本语法中使用'?'、'+'、'|'、'('、')'、'{'、'}'要转义(\),但在扩展的正则表达式语法中则不需要,因此,如果要将它们解释为一般字符,就必须转义。

TAG: Linux

 

评分:0

我来说两句

Open Toolbar