现在根据所有文献
echo 1234abcd|sed "s|[0-9]\+|#|g"
应该输出#abcd。和
echo abcd|sed "s|[0-9]\+|#|g"
应该输出abcd。
但在 OS X 10.4.11 上,第一个表达式输出 1234abcd。在第一个示例中使用 * 代替 + 有效,但在第二个示例中失败,输出 #abcd,因为 [0-9] 模式匹配零次。
+ 运算符在 OS X 的正则表达式中不起作用吗?还有其他选择吗?
Thanks
On OSX, sed
默认情况下使用基本 RE。你应该使用sed -E
如果你想使用现代 RE,包括"+"
一个或多个操作员。
See here http://developer.apple.com/documentation/Darwin/Reference/Manpages/man1/sed.1.html为表明sed
默认使用基本 RE,here http://developer.apple.com/documentation/Darwin/Reference/Manpages/man7/re_format.7.html#//apple_ref/doc/man/7/re_format对于现代 RE 语法,以及here http://developer.apple.com/documentation/Darwin/Reference/Manpages/man1/ed.1.html#//apple_ref/doc/man/1/ed对于基本 RE (ed
) 信息。
或者,如果您有一个正则表达式引擎doesn't支持+
无论如何,你可以简单地使用*
相反,通过转换(例如):
[a-z]+
into:
[a-z][a-z]*
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)