2011-08-02 17 views
2

請考慮以下字符串:ABC。我想使用正則表達式捕獲以下組:在正則表達式匹配中使用Lookaound或忽略非捕獲

Group1: AC 
Group2: B 

這兩個組必須使用單個正則表達式捕獲。我無法控制代碼,因此子匹配或捕獲組將無濟於事。

我已經嘗試了兩個非捕獲組,並環顧四周。

對於非捕獲組,該匹配仍是最終結果的一部分。

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

組1:ABC#不正確,因爲B是匹配的一部分。組2:B

回顧一下,Group2沒有被消耗,並且在展望之後的正則表達式應該再次匹配Group2的內容,其中包括它作爲Group1的一部分。

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

Group1:ABC#不正確,因爲B是匹配的一部分。 Group2:B

如何忽略「B」作爲Group1匹配的一部分?

任何幫助解決這個問題都非常感謝。

感謝, 巴拉吉

回答

1

你不能。正則表達式引擎不能將非線性子匹配粘貼到單個匹配中。任何匹配必須是原始文本中的一連串字符。

+0

謝謝。是否有可能忽略最終比賽中的非捕獲組? –

+0

編號參加比賽。它是否捕獲任何東西都是無關緊要的。 –