正则表达式中的深度嵌套组

Deeply-nested groups in RegEx

本文关键字:嵌套 深度 正则表达式      更新时间:2023-09-26

我正在回答一个问题,我得到了tenub的评论。

评论是:

您是否需要使用 ${1}000,因为前缀内容也由数字组成?

所以如果我使用这个正则表达式。(不要追求实用性。这是故意的这个问题)

^(((((((((((.{3})))))))))))

所以在字符串"some string".$1 $11包含的组。 "som" .

现在,如果我想像 some1 字符串一样替换上面的字符串,我会这样做:

$11 // Group 1 followed by my replace string "1"

但是,这与第11组相匹配,该组也由$11表示。

我知道回调函数,但我需要知道是否有任何特定的正则表达式。

所以,我的问题:

  1. 是否有任何特殊的语法,以便替换字符串1和由 $11 表示的 Group11 之间没有冲突
  2. 为什么这样的嵌套组在正则表达式中有效。使用嵌套组的测试用例有哪些?

您可以将0附加到匹配组以解决歧义。根据 MDN,您只能有 1 或 2 位反向引用。

"some string".replace(/^(((((((((((.{3})))))))))))/, '$011'); 
'' => "som1e string"