Tag: 平衡组

在可变长度lookbehind中平衡组

TL; DR:在.NET的lookbehinds内使用捕获(尤其是平衡组)会改变获得的捕获,尽pipe它不应该有所作为。 什么是.NET的向后看,打破了预期的行为? 我试图想出这个问题的答案,作为与.NET平衡组织玩弄的借口。 但是,我不能让他们在一个可变长度lookbehind内工作。 首先,请注意,我不打算高效地使用这个特定的解决scheme。 这更多的是因为学术的原因,因为我觉得有一些事情发生在我不知道的可变长度lookbehind上。 而且我知道,将来我可以派上用场的时候,实际上我需要使用类似的东西来解决问题。 考虑这个input: ~(ab (c) d (ef (g) h) i) j (k (l (m) n) p) q 我们的目标是匹配所有的字母,这些字母在~之前的圆括号内,不pipe多深(从a到i )。 我试图在向后看的地方检查正确的位置,这样我就可以在一个调用Matches得到所有的字母。 这是我的模式: (?<=~[(](?:[^()]*|(?<Depth>[(])|(?<-Depth>[)]))*)[az] 在后面我试图find一个~(然后我使用命名的组堆栈Depth来计算无关的开括号。只要在~( )中打开的括号永远不会closures,则后向应该匹配。 (?<-Depth>…)不能从堆栈中popup任何东西,并且向后看会失败(也就是说,对于来自j所有字母)。不幸的是,这不起作用,而是匹配a , b , c , e , f , g和m ,所以只有这些: ~(ab (c) _ (ef (g) _) _) _ (_ (_ (m) _) _) […]

什么是正则expression式平衡组?

我只是在阅读一个关于如何在双花括号内获取数据的问题 ( 这个问题 ),然后有人提出了平衡组。 我还不太确定它们是什么以及如何使用它们。 我通读了“ 平衡组定义” ,但是这个解释很难理解,对于我提到的问题我还是很困惑。 有人可以简单地解释什么是平衡组,以及它们是如何有用的?