在学习中总是会忘记正则表达式的写法:所以今天去鸟哥的网站上把这个总结下下来,留着给自己用:
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 |