各种工具之正则表达式语法比较
|
|
在各种常用的工具中,
正则表达式如此的相似却又不同。
下表列出了一些常用的正则表达式,以及其不同之处。
项目总多,遗漏必有不少,请各位看官不吝指出。
以perl的正则为基准,不同的用法以粉红色标出。
|
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个 {n} {m,n} {m,} {,n}
|
\{n\}
|
{n}
|
\{n\}
|
{n}或\{n\} 仅定义 --posix 或 --re-interval有效(要表达}和{,得用\\{和\\} 没有定义--posix或--re-interval时,不能用{n}的语法, \}\{和}{同义
|
{n}
|
\{n\}
|
{n}
|
{0,}
|
*
|
*
|
*
|
*或\*, (要表达*,得用\\*)
|
*
|
*
|
*
|
{1,}
|
\+
|
+
|
\+
|
+或\+, (要表达+, 得用\\+)
|
+
|
\+
|
+
|
{0,1}
|
\?
|
?
|
\?
|
?或\?, (要表达?, 得用\\?)
|
?
|
\?
|
?
|
任意字符
|
.
|
.
|
.
|
. 含\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
|
不支持
|
不支持
|
\r
|
\r
|
\r
|
\r
|
\r
|
空白 \s
|
不支持
|
不支持
|
不支持
|
不支持
|
\s
|
\s
|
\s
|
非空白 \S
|
不支持
|
不支持
|
不支持
|
不支持
|
\S
|
\S
|
\S
|
制表符 \t
|
不支持
|
不支持
|
高版本支持
|
\t
|
\t
|
\t
|
\t
|
垂直制表符 \v
|
不支持
|
不支持
|
高版本支持
|
\v
|
\v
|
另义 \v表示very magic
|
\v
|
单词字符 \w [A-Za-z0-9_]
|
\w
|
\w
|
\w
|
不支持
|
\w
|
\w
|
\w
|
非单词字符 \W [^A-Za-z0-9]
|
\W
|
\W
|
\W
|
不支持
|
\W
|
\W
|
\W
|
\xn 16进制
|
不支持
|
不支持
|
高版本支持
|
\xn
|
\xn
|
另义 \x表示[0-9A-Za-z]
|
\xn
|
\n 八进制
|
不支持
|
不支持
|
不支持
|
\n
|
\n
|
不支持
|
\n
|
\n 后向引用
|
\n
|
\n
|
\n
|
\n 仅取结果可用
|
\n
|
\n 仅取结果可用
|
\n
|
[:alnum:] 字母和数字
|
[:alnum:]
|
[:alnum:]
|
[:alnum:]
|
[:alnum:]
|
[:alnum:]
|
[:alnum:]
|
不支持
|
[:alpha:] 字母
|
[:alpha:]
|
[:alpha:]
|
[:alpha:]
|
[:alpha:]
|
[:alpha:]
|
[:alpha:]
|
不支持
|
[:cntrl:] 控制字符
|
[:cntrl:]
|
[:cntrl:]
|
[:cntrl:]
|
[:cntrl:]
|
[:cntrl:]
|
[:cntrl:]
|
不支持
|
[:digit:] 数字
|
[:digit:]
|
[:digit:]
|
[:digit:]
|
[:digit:]
|
[:digit:]
|
[:digit:]
|
不支持
|
[:graph:] 可打印字符(不含空格)
|
[:graph:]
|
[:graph:]
|
[:graph:]
|
[:graph:]
|
[:graph:]
|
[:graph:]
|
不支持
|
[:lower:] 小写
|
[:lower:]
|
[:lower:]
|
[:lower:]
|
[:lower:]
|
[:lower:]
|
[:lower:]
|
不支持
|
[:print:] 可打印字符(含空格)
|
[:print:]
|
[:print:]
|
[:print:]
|
[:print:]
|
[:print:]
|
[:print:]
|
不支持
|
[:punct:] 标点
|
[:punct:]
|
[:punct:]
|
[:punct:]
|
[:punct:]
|
[:punct:]
|
[:punct:]
|
不支持
|
[:space:] 空格
|
[:space:]
|
[:space:]
|
[:space:]
|
[:space:]
|
[:space:]
|
[:space:]
|
不支持
|
[:upper:] 大写字母
|
[:upper:]
|
[:upper:]
|
[:upper:]
|
[:upper:]
|
[:upper:]
|
[:upper:]
|
不支持
|
[:xdigit:] 16进制数字
|
[:xdigit:]
|
[:xdigit:]
|
[:xdigit:]
|
[:xdigit:]
|
[:xdigit:]
|
[:xdigit:]
|
不支持
|
[:return:]
|
不支持
|
不支持
|
不支持
|
不支持
|
不支持
|
[:return:]
|
不支持
|
[:tab:]
|
不支持
|
不支持
|
不支持
|
不支持
|
不支持
|
[:tab:]
|
不支持
|
[:escape:]
|
不支持
|
不支持
|
不支持
|
不支持
|
不支持
|
[:escape:]
|
不支持
|
[:backspace:]
|
不支持
|
不支持
|
不支持
|
不支持
|
不支持
|
[:backspace:]
|
不支持
|
|
|
|