1

私は .Net Regex ([abc][e])+([abc]) を持っていますが、一致させようとすると、グループ内の文字列全体ではなく、数文字のみに一致します。

これが私の入力グループと目的の出力グループです

  • aebeceaxyz - グループ 1 (aebece)、グループ 2 (a)
  • aebecebxyz - グループ 1 (aebece)、グループ 2 (b)
  • aebececxyz - グループ 1 (aebece)、グループ 2 (c)
  • beceaecxyz - グループ 1 (beceae)、グループ 2 (c)

私の正規表現では、 (ce)(a)/(ce)(b)/(ce)(c)/(ae)(/c) の結果が得られますが、これは私が望むものではありません。

4

3 に答える 3

2

最初のグループで [abc][e] の最初の一致を取得していますが、キャプチャしているグループ全体を括弧で囲みたいとします。また、?: を使用して、内側のグループをキャプチャしないようにすることもできます。これにより、探している結果が得られるはずです。

((?:[abc][e])+)([abc])
于 2012-07-12T18:57:22.177 に答える
0

試す([abce]{5}[e])+([abc])

あなたがしようとしている正規表現は、最初のグループで繰り返し回数を指定していません

([abce]{6})+([abc])最初のグループが「e」で終わることを本当に確認したい場合を除き、単に持つこともできます

于 2012-07-12T18:52:37.590 に答える
0

([abc][e]).*([abc]) を使用できますか?

于 2012-07-12T18:56:15.557 に答える