2014-07-14 23 views
2

我有以下模式{(.*?)},它仅匹配1个项目。如何使用正则表达式匹配多个项目

如何我可以从这段文字

akjsd {ORDERNUMBER} aksjd {PatientName} aksjak SDJ askdj {PatientSurname} askdjh askdj {PatientNumber} aksjd aksjd aksjd kajsd kasjd

匹配在C#中的多个项目

拿到名单像

{ORDERNUMBER}

{} PatientName

{} PatientSurname

{} PatientNumber

谢谢!

+1

它的工作原理看http://regex101.com/r/eN2hY4/17 –

+0

@AvinashRaj哦!它不在这里工作http://www.regexr.com/谢谢!!! –

+1

这是以前的一个类似问题的答案:http://stackoverflow.com/questions/4892452/regex-match-multiple-times-in-string?rq=1 – jmsb

回答

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