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/

相关文章:

Javascript 书签可以在 Windows 上工作,但不能在 Mac 上工作

cocoa - Mac OSX 应用程序安装?

linux - ^[ :blank:] does not match dot in sed

ruby/regex 获取每个单词的第一个字母

c# - 正则表达式 C#

node.js - nvm 安装 Node 无法在 macOS Big Sur M1 芯片上安装

linux - 如何以优化的方式用多行替换exec文件中的字符串

bash - 复制第一个位置的最后一列 awk

java正则表达式用于分割字符串

regex - 如何使用 Oracle regexp_substr 从字符串中提取单词?