2014-07-14 59 views
1

我想用正則表達式替換某個組。c#正則表達式拆分或替換。這是我的代碼我做了

我在尋找並盡力而爲,但它超出了我的頭。

我想要做的是,

string text = "(12je)apple(/)(jj92)banana(/)cat"; 
string resultIwant = {apple, banana, cat}; 

在第一個括號,必須有4個字符,包括數字。 和'(/)'即將結束。

這是我的代碼。 (我用火柴功能)

string text= @"(12dj)apple(/)(88j1)banana(/)cat"; 
string pattern = @"\(.{4}\)(?<value>.+?)\(/\)"; 

Regex rex = new Regex(pattern); 
MatchCollection mc = rex.Matches(text); 
if(mc.Count > 0) 
{ 
    foreach(Match str in mc) 
    { 
    print(str.Groups["value"].Value.ToString()); 
    } 
} 

然而,結果卻是 蘋果 香蕉

所以我想我應該用更換或別的東西,而不是比賽。

回答

1

下面的正則表達式將捕捉字字符,只是爲了)後的,

(?<=\))(\w+) 

DEMO

你的C#代碼將是,

{ 
    string str = "(12je)apple(/)(jj92)banana(/)cat"; 
    Regex rgx = new Regex(@"(?<=\))(\w+)"); 
    foreach (Match m in rgx.Matches(str)) 
    Console.WriteLine(m.Groups[1].Value); 
} 

IDEONE

說明:

  • (?<=\))正回顧後在這裏使用。它在)符號後面設置匹配標記。
  • ()捕獲組。
  • \w+然後它捕獲以下所有單詞字符。它不會捕獲以下(符號,因爲它不是一個單詞字符。
+0

非常感謝!我用你鏈接的DEMO模擬它。有用。 – Phiru

+0

很高興解決。 –

+0

我想在第一個方括號中僅限制4個字符,而在第二個方括號中只限制一個字符。 我試過(。{4} <= \))沒有工作:P 我會努力實現它! – Phiru