正则表达式RE
正则表达式是一种字符模式,用于在查找过程中匹配指定的字符。
在大多数程序里,正则表达式都被置于两个正斜杠之间;例如/[oO]ve/就是由正斜杠界定的正则表达式,
它将匹配被查找的行中任何位置出现的相同模式。在正则表达式中,元字符是最重要的概念。
匹配数字: ^[0-9]+$ 123 456 5y7(X)
匹配Mail:[a-z0-9_]+@[a-z0-9]+\.[a-z]+
匹配IP: [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}
或
[[:digit:]]....
元字符
基本元字符
^ 行首定位符 ^love
$ 行尾定位符 love$
. 匹配单个字符 l..e
* 匹配前导符0到多次 ab*love
.* 任意多个字符
[] 匹配指定范围内的一个字符 [lL]ove
[-] 匹配指定范围内的一个字符 [a-z0-9]ove
[^] 匹配不在指定组内的字符 [^a-z0-9]ove
\ 用来转义字符 love\.
\< 词首定位符 \<love
\> 词尾定位符 love\>
\(..\) 匹配稍后使用的字符的标签 :% s/192.168.220.1/192.168.220.5/
:% s/\(192.168.220.\)1/\15/
:% s/\(192.)\(168.\)\(220.\)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)+
(...)(...)\1\2 标签匹配字符 (love)able\1er
x{m} 字符x重复m次 o{5}
x{m,} 字符x至少重复m次 o{5,}
x{m,n} 字符x重复m到n次 o{5,n}
POSIX字符类
[:alnum:] 字母与数字字符 [[:alnum:]]+
[:alpha:] 字母字符(包括大小写字母) [[:alpha:]]{4}
[:blank:] 空格与制表符 [[:blank:]]*
[:digit:] 数字字母 [[:digit:]]?
[:lower:] 小写字母 [[:lower:]]{5,}
[:upper:] 大写字母 [[:upper:]]+
[:punct:] 标点符号 [[:punct:]]
[:space:] 包括换行符,回车符等在内的所有空白 [[:space:]]+
空行
^$
%[\t]*$
注释行
^#
^[\t]*#