现在根据所有文献
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 中的正则表达式中不起作用吗?有替代方案吗?
谢谢
最佳答案
在 OSX 上,sed
默认情况下使用基本 RE。您应该使用 sed -E
如果您想使用现代 RE,包括 "+"
一个或多个运算符(operator)。
见 here表示sed
默认使用基本 RE,here对于现代 RE 语法,和 here用于基本 RE ( ed
) 信息。
或者,如果您的正则表达式引擎不支持 +
总之,你可以简单地使用 *
相反,通过转换(例如):
[a-z]+
进入:
[a-z][a-z]*
关于regex - 在 OS X 上 sed - 似乎无法在正则表达式中使用 +,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1227174/