regex - 在 OS X 上 sed - 似乎无法在正则表达式中使用 +

标签 regex macos sed

现在根据所有文献

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/

相关文章:

java - 如何使用正则表达式仅在字符串中的特定位置匹配模式?

regex - 在 Visual Studio 2010 中使用正则表达式查找和替换小写

testing - 使用* Darwin作为Mac OSX应用程序的测试平台

bash - 将复杂的命令结果分配给变量

bash - 替换多个模式,但不能用相同的字符串

regex - Firefox 给出 SyntaxError : invalid regexp group

java -\\不能与Java正则表达式一起使用

xcode - 在AppKit中为macOS SwiftUI应用设置主窗口标题吗?

linux - 如何链接本地目录中的共享库,OSX 与 Linux

linux - 如果在bash中使用sed在模式之间匹配特定字符串,则在字符串前后添加字符串