如何使用Regex匹配多个项目

时间:2014-07-14 13:13:14

标签: c# regex

我有以下模式{(.*?)},它只匹配1个项目。

如何在此文本中匹配C#中的多个项目

  

akjsd {OrderNumber} aksjd {PatientName} aksjak sdj askdj   {PatientSurname} askdjh askdj {PatientNumber} aksjd aksjd aksjd kajsd   kasjd

获取类似

的列表
  

{OrderNumber}

     

{PatientName}

     

{PatientSurname}

     

{PatientNumber}

谢谢!

2 个答案:

答案 0 :(得分:4)

或许这样的事情?

string input = "akjsd{OrderNumber} aksjd {PatientName} aksjak sdj askdj {PatientSurname} askdjh askdj {PatientNumber} aksjd aksjd aksjd kajsd kasjd";
MatchCollection matches = Regex.Matches(input, "{(.*?)}");

foreach(Match match in matches)
{
    Console.WriteLine(match.Value);
}

答案 1 :(得分:2)

使用此正则表达式{[^}]*}(效率更高,因为.*?在每一步都回溯)并按照以下方式执行:

var resultList = new StringCollection();
var myRegex = new Regex("{[^}]*}", RegexOptions.Multiline);
Match matchResult = myRegex.Match(yourString);
while (matchResult.Success) {
    resultList.Add(matchResult.Value);
    Console.WriteLine(matchResult.Value);
    matchResult = matchResult.NextMatch();
    }