各类工具中正则表达式的比较。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]
|
| |