在各种常用的工具中,正则表达式如此的相似却又不同。 下表列出了一些常用的正则表达式,以及其不同之处。 项目总多,遗漏必有不少,请各位看官不吝指出。 以perl的正则为基准,不同的用法以粉红色标出。 (xhchen8018@yahoo.com.cn)
|
grep 2.5.1 |
egrep 2.5.1 |
sed 3.02 sed 4.07 |
awk 3.1.1 |
perl 5.8.0 |
vim 6.1 |
JavaScript ?? |
转义 |
\ |
\ |
\ |
\ |
\ |
\ |
\ |
行头 |
^ |
^ |
^ |
^ |
^ |
^ |
^ |
行尾 |
$ |
$ |
$ |
$ |
$ |
$ |
$ |
n个 |
\ |
|
\ |
或\ 仅定义 --posix 或 --re-interval有效(要表达}和 没有定义--posix或--re-interval时,不能用的语法, \}\{同义 |
|
\ |
|
|
* |
* |
* |
*或\*, (要表达*,得用\\*) |
* |
* |
* |
|
\+ |
+ |
\+ |
+或\+, (要表达+, 得用\\+) |
+ |
\+ |
+ |
|
\? |
? |
\? |
?或\?, (要表达?, 得用\\?) |
? |
\? |
? |
任意字符 |
. |
. |
. |
. 含\n. |
. /s修饰后则含\n |
. 除\n |
. 除\n |
(pat) 匹配并获结果 |
\(pat\) |
(pat) |
\(pat\) |
(pat)或\(pat\) (要表达括号,用\\( \\) ) |
(pat) |
\(pat\) |
(pat) |
(?:pat) 匹配但不获结果 |
不支持 |
不支持 |
不支持 |
不支持 |
(?:pat) |
不支持 |
(?:pat) |
(?=pat) 等于预查 |
不支持 |
不支持 |
不支持 |
不支持 |
(?=pat) |
不支持 |
(?=pat) |
(?!pat) 不等预查 |
不支持 |
不支持 |
不支持 |
不支持 |
(?!pat) |
不支持 |
(?!pat) |
| 或 |
\| |
| |
\| |
|或\| (要表达|,得用\\|) |
| |
\| |
| |
其中任意字符 |
[xyz] |
[xyz] |
[xyz] |
[xyz] |
[xyz] |
[xyz] |
[xyz] |
[.ch.] [=ch=] |
不支持 |
不支持 |
[.ch.] |
不支持 |
不支持 |
不支持 |
不支持 |
单词边界 \b |
\b |
\b |
\b |
不支持 |
\b |
不支持 |
\b |
非单词边界 \B |
\B |
\B |
\B |
不支持 |
\B |
不支持 |
\B |
单词左右边界 <> |
\< \> |
\< \> |
\< \> |
不支持 (><和\>\<和\\>\\<同义 |
不支持(><和\>\<同义 |
\< \> |
不支持(><和\>\<同义 |
控制字符 /cx |
不支持 |
不支持 |
\cx |
不支持 |
\cx |
不支持 |
\cx |
数字\d |
不支持 |
不支持 |
不支持 |
不支持 |
\d |
\d |
\d |
非数字\D |
不支持 |
不支持 |
不支持 |
不支持 |
\D |
\D |
\D |
换页 \f |
不支持 |
不支持 |
高版本支持 |
\f |
\f |
另义 \f表示文件名字符 |
\f |
换行 \n |
不支持 |
不支持 |
不支持 |
\n |
\n |
\n |
\n |
回车 \r |
不支持 |
% |
|