regex-如何使用';第n捕获组';(\n)lookback中的表达式?

regex-如何使用';第n捕获组';(\n)lookback中的表达式?,regex,regex-lookarounds,regex-group,Regex,Regex Lookarounds,Regex Group,是否有任何方法可以在regex lookback中使用“第n个捕获组”表达式(即“\1”、“\2”、“\3”等) 类似这样:(?如果您检查这个正则表达式(a.*)。+(? 您可以看到,捕获组1可以是可变长度的 因此,大多数只支持固定宽度的正则表达式引擎 查看断言背后的内容,不允许使用反向引用 即使捕获组是固定的(a) 它还是不让你做 备选方案可能因情况而异,但通常涉及使用前瞻性断言 Fwiw (?当然可以,我会添加一些。我之所以没有添加任何关于我的特定用例的信息,是因为我认为这个主题/工具相

是否有任何方法可以在regex lookback中使用“第n个捕获组”表达式(即“\1”、“\2”、“\3”等)


类似这样:
(?如果您检查这个正则表达式
(a.*)。+(?
您可以看到,捕获组1可以是可变长度的

因此,大多数只支持固定宽度的正则表达式引擎
查看断言背后的内容,不允许使用反向引用
即使捕获组是固定的
(a)

它还是不让你做


备选方案可能因情况而异,但通常涉及使用前瞻性断言


Fwiw


(?当然可以,我会添加一些。我之所以没有添加任何关于我的特定用例的信息,是因为我认为这个主题/工具相当笼统,所以我担心有人会将我的特定问题编辑成多余的和/或轶事。我想这个问题与我的特定问题的关系要小得多关于如何使用/替换正则表达式中的特定功能。尽管如此,我还是会为我的特定问题添加一些上下文。如果在我这样做之后您能帮助我,我将不胜感激。哦,谢谢您的指导。可以使用固定长度的look behinds来完成,我将向您展示如何..好了,发布了一个解决方案。一般来说,这是相当容易的,因为字符实际上是固定长度的。任何可变长度的东西,你都必须使用可变长度的点网,它看起来很落后。
// Should match 'b', because it is neither followed nor preceded by a 'b'.
// Should match 'd' for the same reason
aabccd 

// Should match 'y'
xxyzz

// Should match 'l' and 'o'
lmmmnnopppp
 (?|
      (?<=
           \b 
           ( )                           # (1)
           (?=
                ( [a-z] )                     # (2)
           )
      )
      \2 
      (?! \2 )
   |  
      (?<=
           ( [a-z] )                     # (1)
           (?! \1 )
           (?=
                ( [a-z] )                     # (2)
           )
      )
      \2 
      (?! \2 )
 )
 
 (?:
      (?<=
           \b 
           ( )                           # (1)
           (?=
                ( [a-z] )                     # (2)
           )
      )
      \2 
      (?! \2 )
   |  
      (?<=
           ( [a-z] )                     # (3)
           (?! \3 )
           (?=
                ( [a-z] )                     # (4)
           )
      )
      \4 
      (?! \4 )
 )