在正则表达式匹配中使用环视或忽略非捕获

时间:2011-08-02 04:21:31

标签: .net regex lookaround

考虑以下字符串:ABC。我想使用正则表达式捕获以下组:

Group1: AC
Group2: B

必须使用单个正则表达式捕获这两个组。我无法控制代码,因此子匹配或捕获组无济于事。

我已经尝试了两个非捕获组并环顾四周。

对于非捕获组,匹配仍然是最终结果的一部分。

(?<Group1>a(?:(?<Group2>b))c)

Group1:ABC#不对,因为B是比赛的一部分。第2组:B

顺便说一下,Group2没有消耗,前瞻后的正则表达式应该再次匹配Group2的内容,它包含它作为Group1的一部分。

(?<Group1>a(?=(?<Group2>b))bc)

Group1:ABC#不对,因为B是比赛的一部分。 第2组:B

如何忽略“B”作为Group1匹配的一部分?

非常感谢任何有关解决此问题的帮助。

谢谢, 巴拉吉

1 个答案:

答案 0 :(得分:1)

你做不到。正则表达式引擎无法将非线性子匹配粘贴到单个匹配中。任何匹配必须是原始文本中的一系列字符。