1. 什么是正规表示法
正规表示法就是处理字符串的方法,他是以行位单位来进行字符串的处理行为,正规表示法透过一些特殊符号的辅助,可以让使用者轻易地达到[搜索/删除/取代]某特定字符串的处理程序。
2. 基础的正规表示法
2.1 利用中括号[]来搜寻集合字符
其实[]里面不论有几个字符,它都仅代表某一个字符。
2.2 行首与行尾字符^ $
注意:^符号,在字符集合符号(括号[])之内与之外是不同的。在[]内代表反向选择,在[]之外则代表定位在行首的意义。$ 则代表定位在行尾。
2.3 任意一个字符.与重复字符*
- . (小数点):代表一定有一个任意字符的意思
- *(星星号):代表重复前一个0到无穷多次的意思,为组合形态
- .*: 代表零个或多个任意字符
2.4 限定连续RE字符范围{}
基础的正规表示法特殊字符汇整如下:
^word : 待搜寻的字符串word在行首
word$: 待搜寻的字符串word在行尾
.: 代表[一定有一个任意字符]的字符
\: 将特殊符号的特殊意义去除
*:重复零个到无穷多个的前一个RE字符
[list]: 字符集合的RE字符,里面列出想要撷取的字符
[n1-n2]: 字符集合RE字符,里面列出想要撷取的字符范围
[^list]: 字符集合的RE字符,里面列出不要的字符串或范围
\{n,m\}:连续n到m个的前一个RE字符
\{n,\}: 连续n个以上的前一个RE字符
3. 延伸正规表示法
例如我们要去除regular_express.txt文件中的空白行与行首为#的行列,使用的是 grep -v '^$' regular_express.txt|grep -v '^#',需要使用到管线命令来搜索两次。那么如果使用延伸型的正规表示法,则可以简化为:
egrep -v '^$|^#' regular_express.txt
延伸型正规表示法的特殊符号:
+ :重复一个或一个以上的前一个RE字符
?:零个或一个的钱一个RE字符
|:用或的方式找出数个字符串
():找出群组字符串
()+:多个重复群组的判别