如何使 sed 正则表达式语法像 python 或 javascript 一样工作?

如何使 sed 正则表达式语法像 python 或 javascript 一样工作?

我问了一个问题将字符串插入文本文件中的列表变量 [使用 sed]

其中 @RomanPerekhrest 向我展示了不同的正则表达式语法。

\(=([^)]*\))可以捕获[^)]*为组 1 。这让我很困惑。

您可以在以下位置查看结果https://regex101.com/r/DRChkE/2

在此输入图像描述 在此输入图像描述


https://regex101.com/r/LItVNg/1

在此输入图像描述

在我看来这\(([^\)]*)\)是正确的,但它在 sed 中被破坏了。

所以我想知道如何让 sed 使用正则表达式语法标准作为 python 或 javascript (许多语言的通用标准)。

答案1

您正在寻找 Perl 风格的又名 PCRE 正则表达式,但这不是符合 POSIX 的语法,并且不受标准命令行工具(如sed.支持称为基本正则表达式 (BRE) 和扩展正则表达式 (ERE) 的语法。前者sed是默认值,后者是启用的-E(在 GNU sed 中-r也可以)。

您偶尔会看到一些支持 PCRE 的标准工具版本(例如 GNUgrep具有该-P标志),但这只是例外而不是常态。

请参阅标准维基百科正则表达式页面的部分了解详细信息。

相关内容