我有以下模式{(.*?)}
,它只匹配1个项目。
如何在此文本中匹配C#中的多个项目
akjsd {OrderNumber} aksjd {PatientName} aksjak sdj askdj {PatientSurname} askdjh askdj {PatientNumber} aksjd aksjd aksjd kajsd kasjd
获取类似
的列表{OrderNumber}
{PatientName}
{PatientSurname}
{PatientNumber}
谢谢!
答案 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();
}