【问题标题】:How to match multiple items with Regex如何使用正则表达式匹配多个项目
【发布时间】:2014-07-14 13:13:14
【问题描述】:

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

我如何从这个文本中匹配 C# 中的多个项目

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

得到类似的列表

{订单号}

{患者姓名}

{患者姓氏}

{患者编号}

谢谢!

【问题讨论】:

标签: c# regex


【解决方案1】:

大概是这样的吧?

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);
}

【讨论】:

    【解决方案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();
        } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多