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