![如何使 sed 正则表达式语法像 python 或 javascript 一样工作?](https://linux22.com/image/125032/%E5%A6%82%E4%BD%95%E4%BD%BF%20sed%20%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E8%AF%AD%E6%B3%95%E5%83%8F%20python%20%E6%88%96%20javascript%20%E4%B8%80%E6%A0%B7%E5%B7%A5%E4%BD%9C%EF%BC%9F%20.png)
我问了一个问题将字符串插入文本文件中的列表变量 [使用 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
标志),但这只是例外而不是常态。
请参阅标准维基百科正则表达式页面的部分了解详细信息。