0

ドキュメントの内容を含む大きな文字列があります。いくつかのマージフィールドが含まれているので、マージフィールドの値を生成するためにそれらをフェッチしたいと思います。

文字列は次のようになります。

string text = "This is a test with merge fields. [First_field], [Second_field] and [Third_field]. Not to forget the [Forth_field]."

私がこれから抜け出したいリストは、次のようになります。

  • [First_field]
  • [Second_field]
  • [Third_field]
  • [Forth_field]

正規表現で実行できることは知っていますが、これは間違いなく私の強みではありません。次のコードで試しましたが、(最初と最後の括弧から)単一の結果が作成されるようです。

Regex.Matches(text, @"\[.*\]", RegexOptions.IgnoreCase);
4

1 に答える 1

3

[との間のすべての文字を一致させています]。つまり ]すべてのフィールドを飲み込みます。必要なのは、量指定子の後にa を使用して実行できる遅延一致と呼ばれるものです。?

@"\[.*?\]"

または、文字クラスの否定を使用して行われる以外 の任意の文字に一致させることもできます。][^]

@"\[[^\]]*\]"
于 2012-09-07T08:59:07.790 に答える