在比赛中匹配

时间:2012-03-14 15:03:08

标签: c# .net regex

我有一个简单的字符串:

data1:abc,123,xyz,data2:hello,goodbye

我需要正则表达式返回匹配集合:

abc
123
xyz

过去我会用正则表达式来做:

data1:(.*)data2:

然后将其输出分成逗号。

有没有办法将此作为一个正则表达式而没有外部代码?

2 个答案:

答案 0 :(得分:2)

试试这个

String text = "data1:abc,123,xyz,data2:hello,goodbye";
Regex reg = new Regex(@"(?<=data1:.*)[^,]+(?=.*data2)");

MatchCollection result = reg.Matches(text);

foreach (var item in result) {
    Console.WriteLine(item.ToString());
}

输出:

  

ABC
  123个
  XYZ

答案 1 :(得分:1)

不确定,但您可以执行类似

的操作
String s="data1:abc,123,xyz,data2:hello,goodbye "
sttring[] slst= s.split(":");

for (int i = 0;i<slst.lemgth;i++)
{
 string[] inr = slst[i].split(",");
 for (int j = 0;j<inr.lemgth;j++)
 {
   if((inr.IndexOf("data") != -1)
    continue;
    //your code  
 }
}