4

通常当你调用 sed 时,你可以调用\1引用第一个子匹配,即:

<something> | sed "s/<regex>\(<regex>\)<regex>/\1/"

这将只采用中间正则表达式并删除外部正则表达式。

但是,如果您有超过 9 个匹配项,您会怎么做?简单地写\10是行不通的,因为它会被解释为take submatch number one and add a zero behind it.

4

2 回答 2

7

这在 sed 中是不可能的。您将不得不使用不同的工具。

以下是关于 SO 的类似问题:

绕过 sed 反向引用限制 \1 到 \9

如何在 sed 中获得第 10 个分组值?

于 2012-08-06T17:56:05.513 回答
1

我不确定 SED,但在许多具有允许子匹配(或有时称为反向引用)的正则表达式实现的语言(javascript、ruby)中,仅支持\1通过\9. \10根本不允许。

任何额外的反向引用都需要使用更复杂的解析器。

于 2012-08-06T17:42:48.163 回答