2011-08-02 9 views
2

ABCという文字列を考えます。私は正規表現を使用して、次のグループをキャプチャしたいと思います:正規表現一致でのLookaroundの使用または非キャプチャの無視

Group1: AC 
Group2: B 

両グループは、単一の正規表現を使用してキャプチャする必要があります。私はコードを制御できないので、サブマッチやキャプチャグループは役に立たない。

私は、非キャプチャグループとルックアラウンドの両方を試みました。

ノンキャプチャグループでは、まだマッチは最終結果の一部です。

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

グループ1:Bとして適切ではないABC#は試合の一部です。グループ2:前後参照してB

、グループ2が消費されていないと先読みを次の正規表現は、グループ1の一部として含まれて再びグループ2の内容と一致する必要があります。

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

グループ1:ABC#はBと一致しません。 グループ2:B

グループ1の試合の一環として「B」を無視するにはどうすればよいですか?

これを回避するための助けがあれば幸いです。

おかげで、 バラジ

答えて

1

あなたがすることはできません。正規表現エンジンは、非線形部分集合を1つのマッチに貼り付けることはできません。一致するものは元のテキストの文字の連続でなければなりません。

+0

ありがとうございました。最終的な試合から非捕獲グループを無視することは可能でしょうか? –

+0

号グループがマッチに参加します。それが何かをキャプチャするかどうかは関係ありません。 –

関連する問題