来自字符串中合并字段的正则表达式MatchCollection

时间:2012-09-07 08:44:36

标签: c# regex string match

我有一个包含文档内容的大字符串。它包含许多合并字段,我想获取它们以生成合并字段的值。

字符串可以是这样的:

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中完成,但这绝对不是我的力量。我尝试使用以下代码,但它似乎创建了一个结果(从第一个和最后一个括号):

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

1 个答案:

答案 0 :(得分:3)

您正在匹配[]之间的每个字符。那包含 ],这意味着你吞下每个字段。您需要的是 lazy 匹配,可以使用量词之后的?进行匹配:

@"\[.*?\]"

或者,您可以匹配 ]之外的任何字符,这是使用字符类[^]

的否定来完成的
@"\[[^\]]*\]"