2012-03-14 265 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