正则表达式

什么是正则表达式

简单的说,正则表达式就是处理字串的方法,他是以行为单位来进行字串的处理行为, 正则表达式通过一些特殊符号的辅助,可以让使用者轻易的达到“搜寻/删除/取代”某特定字串的处理程序!
正则表达式基本上是一种“表达式”, 只要工具程序支持这种表达式,那么该工具程序就可以用来作为正则表达式的字串处理之用。 例如 vi, grep, awk ,sed 等等工具,因为她们有支持正则表达式, 所以,这些工具就可以使用正则表达式的特殊字符来进行字串的处理。但例如 cp, ls 等指令并未支持正则表达式, 所以就只能使用 bash 自己本身的通配符字符而已。
是 Linux 基础当中的基础,虽然也是最难的部分, 不过,如果学成了之后,一定是“大大的有帮助”的!这就好像是金庸小说里面的学武难关:任督二脉! 打通任督二脉之后,武功立刻成倍成长!

正则表达式元字符:

===基本正则表达式元字符
元字符     功能                         示例   
=================================================================================== 
^      行首定位符               ^love    grep '^root' /etc/passwd
  
$      行尾定位符              love$    grep 'root$' /etc/passwd

.      匹配单个字符             l..e     grep '^r..t' /etc/passwd

*      匹配前导符0到多次        ab*love   grep 'ro*t' /etc/passwd
.*     任意多个字符                      grep 'r*ot' /etc/passwd             grep 'r**t' /etc/passwd


[]     匹配指定范围内的一个字符   [lL]ove   grep '[rx]oot' /etc/passwd

[ - ]   匹配指定范围内的一个      [a-z0-9]ove     grep '[a-z0-9]oot' /etc/passwd

[^]     匹配不在指定组内的字符    [^a-z0-9]ove    grep '[^a-z0-9]oot' /etc/passwd

^ 符号,在字符类符号(括号[])之内与之外是不同的! 在 [] 内代表『反向选择』,在 [] 之外则代表定位在行首的意义! 重点!!!
\              用来转义元字符                  love\.                     
\<             词首定位符                     \             词尾定位符                      love\>                    无用
\(..\)         匹配稍后使用的字符的标签        :%s/172.16.130.1/172.16.130.5/
                                                 :% s/\(172.16.130.\)1/\15/
                                                 :% s/\(172.\)\(16.\)\(130.\)1/\1\2\35/
                                                 :3,9 s/\(.*\)/#\1/ 
                                                                    
x\{m\}          字符x重复出现m次                   o\{5\}
x\{m,\}         字符x重复出现m次以上               o\{5,\}                       
x\{m,n\}        字符x重复出现m到n次                o\{5,10\}                    
===扩展正则表达式元字符
+              匹配一个或多个前导字符          [a-z]+ove   
?              匹配零个或一个前导字符          lo?ve   
a|b            匹配a或b                        love|hate
()             组字符                          loveable|rs    love(able|rs)    ov+  ov+ (ov)+
(..)(..)\1\2   标签匹配字符                  (love)able\1er

POSIX字符类:

image.png

尤其要记住:

[:alnum] 代表所以的大小写英文字符和数字 0-9 A-Z a-z
[:alpha:] 代表任意英文大小写字符  A-Z   a-z
[:lower:] 代表小写字符       a-z
[:upper:] 代表大写字符        A-Z
[:digit:] 代表数字         0-9

你可能感兴趣的:(正则表达式)