3

で終わるすべての行に一致する正規表現を作成しようとしています:XYZで終わる行を除くAAXYZ.

いくつかの例:

  1. ABCXYZ- 一致する必要があります
  2. AAXYZ- 一致してはいけません
  3. ABXYZ- 一致する必要があります

次の式で始めまし.*[^A][^A]XYZ$たが、例 3 では機能しません

4

2 に答える 2

1

ここでは、正規表現はやり過ぎのようです。

var matches = myInput.Split(new[] {'\n'}, StringSplitOptions.RemoveEmptyEntries)
                     .Where(x => x.EndsWith("XYZ") && !x.EndsWith("AAXYZ"))
                     .ToList();

正規表現が必要な場合は、次のようにすることができます。

^(|.|.*[^A].|.+[^A])XYZ$

これは、パイプで区切られた交替のすべての可能性を単純に拡張します。

  • 単にXYZ
  • 任意の 1 文字の後に続くXYZ(例: AXYZ)
  • 0 個以上の文字の後に A 以外の文字が続き、さらに 1 文字が続きますXYZ(例: QAXYZ, foobarBAXYZ)
  • 1 つ以上の文字の後に A 以外の and が続くXYZ(例: XBXYZ, foobarXYZ)
于 2013-10-04T08:19:31.230 に答える