2012-03-14 304 views
2

我有一个简单的字符串中:比赛比赛

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

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

abc 
123 
xyz 

在过去,我会用正则表达式做到这一点:

data1:(.*)data2: 

然后在逗号分隔输出。

有没有办法做到这一点作为一个正则表达式,没有外部代码?

回答

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
XYZ

1

不知道,但你可以做soemthing像

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 
} 
} 
+0

感谢您的输入,但我需要做这个没有任何代码,只是正则表达式。 – 2012-03-14 15:22:16

+0

为什么只需要*正则表达式解决方案? – 2012-03-14 15:38:25

+0

因为这实际上是我传入应用程序的配置值,我不想向解决方案添加更多代码。通过一个完全形成的正则表达式,为我做了这项工作,节省了我重新编码的核心方法。 – 2012-03-15 00:38:41