2010/6/17 listofx <[email protected]>:
> 虽然邮件有点长,我觉得还是保留上面的内容接着写。我有两个疑问:
> 疑问一:
> 你最后的答复我能看明白,不过,不是说还有一种叫做懒惰匹配,也就是不将匹配
> 最大化,如果不熟悉,请看
> http://deerchao.net/tutorials/regex/regex.htm#greedyandlazy
>
> xi...@xiang-laptop:~/tmp$ cat a
> python-gtk2-dev (2.17.0-0ubuntu2), libgladeui-1-9 (3.7.0.is.3.6.7-0ubuntu1), 
> python-gtk2-doc (2.17.0-0ubuntu2)
> xi...@xiang-laptop:~/tmp$ cat a | sed 's/(.*?)//g'
> python-gtk2-dev (2.17.0-0ubuntu2), libgladeui-1-9 (3.7.0.is.3.6.7-0ubuntu1), 
> python-gtk2-doc (2.17.0-0ubuntu2)
>
> 从结果可见,没有达到想要的效果
>

sed 不支持这种修饰符,当然您如果想用 Perl 的话这样最好。

> 疑问二:
> 不理解cat a |sed 
> 's/(.*)//g'为什么会匹配括号,因为按照我先前的解释,最终是将(.*)这样的正则表达式给了sed,而(在正则表达式中有其特殊含义,如果想要
> 匹配(,正确的正则表达式是\(.*\),不是吗?
>

sed 会将不加转义的括号当成普通字符,\( \)会被当成分组括号。

ji...@jimmy:~$ echo Aa | sed 's/\(A\)/[\1]/g'
[A]a

--
Jimmy Xu
-- 
ubuntu-zh mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh

回复