各类工具中正则表达式的比较。Vim 部分基本没问题,其他的用得比较少,可能有错误。
|
grep 2.5.1
|
egrep 2.5.1
|
sed 3.02 sed 4.07
|
awk 3.1.1
|
perl 5.8.0
|
vim 6.3 vim 7.0
|
JavaScript
|
转义字符
|
|
|
|
|
|
/
|
|
行头
|
^
|
^
|
^
|
^
|
^
|
^
|
^
|
行尾
|
$
|
$
|
$
|
$
|
$
|
$
|
$
|
多个
|
|
|
|
或 仅定义 --posix 或 --re-interval有效(要表达}和 没有定义--posix或--re-interval时,不能用的语法, }{同义
|
|
/{n/} /{n,m/} /{n,/} /{,m/} 说明:右花括号前的转义字符 / 可不加
|
|
0 或多个
|
*
|
*
|
*
|
*或*, (要表达*,得用*)
|
*
|
*
|
*
|
1 或多个
|
+
|
+
|
+
|
+或+, (要表达+, 得用+)
|
+
|
/+
|
+
|
0 或 1 个
|
?
|
?
|
?
|
?或?, (要表达?, 得用?)
|
?
|
/? 或 /= 说明:在反向查找的 ? 命令中不可用
|
?
|
任意字符
|
.
|
.
|
.
|
. 含 .
|
. /s修饰后则含
|
.
|
. 除
|
匹配模式并获取结果
|
(pattern)
|
(pattern)
|
(pattern)
|
(pattern)或(pattern) (要表达括号,用( ) )
|
(pattern)
|
/(pattern/)
|
(pattern)
|
匹配模式但不获取结果
|
不支持
|
不支持
|
不支持
|
不支持
|
(?:pattern)
|
/%(pattern/)
|
(?:pattern)
|
强制不区分大小写
|
不支持
|
不支持
|
不支持
|
不支持
|
(?i)
|
/c
|
(?=pattern)
|
强制区分大小写
|
不支持
|
不支持
|
不支持
|
不支持
|
(?-i)
|
/C
|
(?=pattern)
|
零宽度匹配
|
不支持
|
不支持
|
不支持
|
不支持
|
(?=pattern)
|
pattern/@=
|
(?=pattern)
|
零宽度否匹配
|
不支持
|
不支持
|
不支持
|
不支持
|
(?!pattern)
|
pattern/@!
|
(?!pattern)
|
零宽度反向匹配
|
不支持
|
不支持
|
不支持
|
不支持
|
(?<=pattern)
|
pattern/@<=
|
|
零宽度反向否匹配
|
不支持
|
不支持
|
不支持
|
不支持
|
(?<!pattern)
|
pattern/@<!
|
|
无重试匹配(完整匹配)
|
不支持
|
不支持
|
不支持
|
不支持
|
(?>pattern)
|
pattern/@>
|
(?=pattern)
|
或
|
|
|
|
|
|
|
|或| (要表达|,得用|)
|
|
|
/|
|
|
|
特定字符范围中的任意一个字符
|
[xyz]
|
[xyz]
|
[xyz]
|
[xyz]
|
[xyz]
|
[xyz]
|
[xyz]
|
[.ch.] [=ch=]
|
不支持
|
不支持
|
[.ch.]
|
不支持
|
不支持
|
不支持
|
不支持
|
单词边界
|
|
|
|
不支持
|
|
/< 左边界 /> 右边界
|
|
非单词边界
|
B
|
B
|
B
|
不支持
|
B
|
不支持
|
B
|
全字匹配
|
< >
|
< >
|
< >
|
不支持 (><和><和><同义
|
不支持(><和><同义
|
/<word/>
|
不支持(><和><同义
|
控制字符
|
不支持
|
不支持
|
cx
|
不支持
|
cx
|
不支持
|
cx
|
数字
|
不支持
|
不支持
|
不支持
|
不支持
|
d
|
/d
|
d
|
非数字
|
不支持
|
不支持
|
不支持
|
不支持
|
D
|
/D
|
D
|
换页
|
不支持
|
不支持
|
高版本支持
|
f
|
f
|
另义 f表示文件名字符
|
f
|
换行
|
不支持
|
不支持
|
不支持
|
|
|
|
|
回车
|
不支持
|
不支持
|
|
|
|
|
|
空白
|
不支持
|
不支持
|
不支持
|
不支持
|
s
|
/s
|
s
|
非空白
|
不支持
|
不支持
|
不支持
|
不支持
|
S
|
/S
|
S
|
制表符
|
不支持
|
不支持
|
高版本支持
|
|
|
/t
|
|
垂直制表符
|
不支持
|
不支持
|
高版本支持
|
v
|
v
|
另义 v表示very magic
|
v
|
单词字符[A-Za-z0-9_]
|
w
|
w
|
w
|
不支持
|
w
|
/w
|
w
|
非单词字符[^A-Za-z0-9_]
|
W
|
W
|
W
|
不支持
|
W
|
/W
|
W
|
十六进制
|
不支持
|
不支持
|
高版本支持
|
xn
|
xn
|
另义 x表示[0-9A-Za-z]
|
xn
|
八进制
|
不支持
|
不支持
|
不支持
|
|
|
不支持
|
|
后向引用
|
|
|
|
仅取结果可用
|
|
仅取结果可用
|
|
字母和数字
|
[:alnum:]
|
[:alnum:]
|
[:alnum:]
|
[:alnum:]
|
[:alnum:]
|
[:alnum:]
|
不支持
|
字母
|
[:alpha:]
|
[:alpha:]
|
[:alpha:]
|
[:alpha:]
|
[:alpha:]
|
[:alpha:]
|
不支持
|
控制字符
|
[:cntrl:]
|
[:cntrl:]
|
[:cntrl:]
|
[:cntrl:]
|
[:cntrl:]
|
[:cntrl:]
|
不支持
|
数字
|
[:digit:]
|
[:digit:]
|
[:digit:]
|
[:digit:]
|
[:digit:]
|
[:digit:]
|
不支持
|
可打印字符(不含空格)
|
[:graph:]
|
[:graph:]
|
[:graph:]
|
[:graph:]
|
[:graph:]
|
[:graph:]
|
不支持
|
小写字母
|
[:lower:]
|
[:lower:]
|
[:lower:]
|
[:lower:]
|
[:lower:]
|
/l
|
不支持
|
可打印字符(含空格)
|
[:print:]
|
[:print:]
|
[:print:]
|
[:print:]
|
[:print:]
|
[:print:]
|
不支持
|
标点
|
[:punct:]
|
[:punct:]
|
[:punct:]
|
[:punct:]
|
[:punct:]
|
[:punct:]
|
不支持
|
空格
|
[:space:]
|
[:space:]
|
[:space:]
|
[:space:]
|
[:space:]
|
直接敲空格,跟普通字符一样
|
不支持
|
大写字母
|
[:upper:]
|
[:upper:]
|
[:upper:]
|
[:upper:]
|
[:upper:]
|
/u
|
不支持
|
十六进制数字
|
[:xdigit:]
|
[:xdigit:]
|
[:xdigit:]
|
[:xdigit:]
|
[:xdigit:]
|
[:xdigit:]
|
不支持
|
[:return:]
|
不支持
|
不支持
|
不支持
|
不支持
|
不支持
|
[:return:]
|
不支持
|
[:tab:]
|
不支持
|
不支持
|
不支持
|
不支持
|
不支持
|
[:tab:]
|
不支持
|
[:escape:]
|
不支持
|
不支持
|
不支持
|
不支持
|
不支持
|
[:escape:]
|
不支持
|
[:backspace:]
|
不支持
|
不支持
|
不支持
|
不支持
|
不支持
|
[:backspace:]
|
不支持
|
|
|
|
|
|
|
|
|
|
参考:http://blog.zol.com.cn/blog/wjf_top/20290.html