博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

还没飞起来

各种工具之正则表达式语法比较
在各种常用的工具中,
正则表达式如此的相似却又不同。
下表列出了一些常用的正则表达式,以及其不同之处。
项目总多,遗漏必有不少,请各位看官不吝指出。
以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:] 不支持


发表于: 2004-10-15,修改于: 2006-11-17 17:58,已浏览7659次,有评论28条 推荐 投诉
网友: lee 时间:2004-10-15 18:49:50 IP地址:61.51.73.★
<p>佩服佩服...</p>

网友: lee 时间:2004-10-15 18:49:50 IP地址:61.51.73.★
<p>佩服佩服...</p>

网友: myhstone 时间:2004-10-17 16:39:29 IP地址:61.149.201.★
<p>太精彩了。。。</p>

网友: ejzhang 时间:2004-10-18 16:39:36 IP地址:61.55.184.★
<p>太好了!</p>

网友: ejzhang 时间:2004-10-18 16:39:36 IP地址:61.55.184.★
<p>太好了!</p>

网友: HEHE 时间:2004-10-21 13:11:44 IP地址:202.109.79.★
<p>牛,大家向他学习。</p>

网友: 牙齿 时间:2004-10-24 05:14:38 IP地址:61.50.242.★
<p>不解</p>

网友: 牙齿 时间:2004-10-24 05:14:38 IP地址:61.50.242.★
<p>不解</p>

网友: 笨猪猪 时间:2004-10-29 16:22:23 IP地址:219.233.25.★
<p>捧场先~~</p>

网友: 笨猪猪 时间:2004-10-29 16:22:23 IP地址:219.233.25.★
<p>捧场先~~</p>

网友: 小飞爱使申华 时间:2004-11-10 07:56:47 IP地址:24.156.32.★
<p>俺废话少说,save下来先。。。</p>

网友: 笨猪猪 时间:2004-11-22 22:50:01 IP地址:211.95.46.★
<p>嘻嘻,小飞GG速度够快哈。。。。。。</p>

网友: 西门吹牛 时间:2005-02-06 11:44:06 IP地址:202.108.91.★

网友: sunberk 时间:2005-05-13 16:17:56 IP地址:218.106.97.★
非常好,牛人!

网友: sunberk 时间:2005-05-13 16:17:56 IP地址:218.106.97.★
非常好,牛人!

网友: admirer 时间:2005-06-05 19:45:07 IP地址:218.244.252.★
有心人,支持!!

网友: Rainux 时间:2006-03-29 02:14:30 IP地址:218.201.72.★
Very delicious!

网友: Liqix 时间:2006-11-14 22:04:11 IP地址:222.36.109.★
save save and thanks

网友: 不顶不像话 时间:2007-08-03 09:44:46 IP地址:218.79.184.★
看了这篇,心情就像我的ID一样。

网友: 不顶不像话 时间:2007-08-03 10:07:02 IP地址:218.79.184.★
看了这篇,心情就像我的ID一样。

网友: 本站网友 时间:2007-11-26 11:04:02 IP地址:124.42.6.★
dddd!

网友: 守住 时间:2008-07-07 14:00:20 IP地址:202.108.101.★
真的太好了。。。。一定要顶!

网友: 小新 时间:2008-07-15 09:42:19 IP地址:125.33.192.★
好人啊~

网友: huwenhuo 时间:2008-08-15 22:49:15 IP地址:202.127.18.★
sed 's/[:digit:]\{1,\}//g' file
file内容只有一行:
At5g12345
运行结果:
A512345

sed --version
 sed --version
GNU sed version 4.1.5
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,
to the extent permitted by law.

不知道睡么回事来的?

网友: huwenhuo 时间:2008-08-15 22:52:35 IP地址:202.127.18.★

$ sed 's/[:digit:]\{1,\}//g'  file
A512345
$ sed 's/[:digit:]//g'  file
A512345
$ sed 's/\[:digit:\]//g'  file
At5g12345
$ sed 's/\[\[:digit:\]\]//g'  file
At5g12345
$ sed 's/[:digit:][:digit:][:digit:]//g'  file
At5g12345

网友: huwenhuo 时间:2008-08-15 22:54:35 IP地址:202.127.18.★
要用到正则表达式的时候,只好又回去用perl,
但是有时候真的是shell方便,
只好把 PERL 程序在shell里调用。
这shell里的正则就不能搞好点吗。

网友: kaka 时间:2009-03-10 19:29:22 IP地址:221.208.129.★
to huwenhuo :
sed 's/[:digit:]\{1,\}//g' file
file内容只有一行:
At5g12345
运行结果:
A512345

我猜你应该用 sed -e 's/[0-9]*//g' file

网友: 路过 时间:2009-05-29 20:02:36 IP地址:121.31.17.★
辛苦了。

支持!


给我留言
版权所有 ChinaUnix.net 页面生成时间:0.02904