在学习中总是会忘记正则表达式的写法:所以今天去鸟哥的网站上把这个总结下下来,留着给自己用:
RE字符
|
意义与范例
|
^word
|
意义:待搜寻的字符串(word)在行首!
范例:搜寻行首为#开始的那一行,并列出行号
grep-n'^#'regular_express.txt
|
word$
|
意义:待搜寻的字符串(word)在行尾!
范例:将行尾为!的那一行打印出来,并列出行号
grep-n'!$'regular_express.txt
|
.
|
意义:代表『一定有一个任意字符』的字符!
范例:搜寻的字符串可以是(eve)(eae)(eee)(ee),但不能仅有(ee)!亦即e与e中间『一定』仅有一个字符,而空格符也是字符!
grep-n'e.e'regular_express.txt
|
\
|
意义:跳脱字符,将特殊符号的特殊意义去除!
范例:搜寻含有单引号'的那一行!
grep-n\'regular_express.txt
|
*
|
意义:重复零个到无穷多个的前一个RE字符
范例:找出含有(es)(ess)(esss)等等的字符串,注意,因为*可以是0个,所以es也是符合带搜寻字符串。另外,因为*为重复『前一个RE字符』的符号,因此,在*之前必须要紧接着一个RE字符喔!例如任意字符则为『.*』!
grep-n'ess*'regular_express.txt
|
[list]
|
意义:字符集合的RE字符,里面列出想要撷取的字符!
范例:搜寻含有(gl)或(gd)的那一行,需要特别留意的是,在[]当中『谨代表一个待搜寻的字符』,例如『a[afl]y』代表搜寻的字符串可以是aay,afy,aly即[afl]代表a或f或l的意思!
grep-n'g[ld]'regular_express.txt
|
[n1-n2]
|
意义:字符集合的RE字符,里面列出想要撷取的字符范围!
范例:搜寻含有任意数字的那一行!需特别留意,在字符集合[]中的减号-是有特殊意义的,他代表两个字符之间的所有连续字符!但这个连续与否与ASCII编码有关,因此,你的编码需要设定正确(在bash当中,需要确定LANG与LANGUAGE的变量是否正确!)例如所有大写字符则为[A-Z]
grep-n'[A-Z]'regular_express.txt
|
[^list]
|
意义:字符集合的RE字符,里面列出不要的字符串或范围!
范例:搜寻的字符串可以是(oog)(ood)但不能是(oot),那个^在[]内时,代表的意义是『反向选择』的意思。例如,我不要大写字符,则为[^A-Z]。但是,需要特别注意的是,如果以grep-n[^A-Z]regular_express.txt来搜寻,却发现该档案内的所有行都被列出,为什么?因为这个[^A-Z]是『非大写字符』的意思,因为每一行均有非大写字符,例如第一行的"OpenSource"就有p,e,n,o....等等的小写字
grep-n'oo[^t]'regular_express.txt
|
\{n,m\}
|
意义:连续n到m个的『前一个RE字符』
意义:若为\{n\}则是连续n个的前一个RE字符,
意义:若是\{n,\}则是连续n个以上的前一个RE字符!范例:在g与g之间有2个到3个的o存在的字符串,亦即(goog)(gooog)
grep-n'go\{2,3\}g'regular_express.txt
|