2

次の文字列について考えてみますABC。正規表現を使用して次のグループをキャプチャしたいと思います。

Group1: AC
Group2: B

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

私は両方の非キャプチャグループと周りを見回してみました。

非キャプチャグループの場合、試合は依然として最終結果の一部です。

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

Group1:ABC#Bは試合の一部であるため、正しくありません。グループ2:B

ルックアラウンドでは、Group2は消費されず、先読みに続く正規表現は、Group1の一部として含まれるGroup2のコンテンツと再び一致する必要があります。

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

Group1:ABC#Bは試合の一部であるため、正しくありません。グループ2:B

Group1の試合の一部として「B」を無視するにはどうすればよいですか?

これを回避するための助けは大歓迎です。

ありがとう、バラジ

4

1 に答える 1

1

できません。正規表現エンジンは、非線形の部分一致を 1 つの一致に貼り付けることはできません。すべての一致は、元のテキストからの文字の連続である必要があります。

于 2011-08-02T04:44:42.770 に答える