2014-07-14 28 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(); 
    }