2013-05-22 114 views
1

在C#中,我試圖高效的方式分割

(hello)(world)(hello)(world) 

分割以下字符串以下格式的數組

arr[0] = (
arr[1] = hello 
arr[2] =) 
arr[3] = (
arr[4] = world 
arr[5] =) 
arr[6] = (
arr[7] = hello 
arr[8] =) 
arr[9] = (
arr[10] = world 
arr[11] =) 

我目前使用下面的正則表達式表達式執行拆分,它似乎很慢

Regex.Split(value1, @"(?<=\))|(?=\))|(?=\()|(?<=\()") 

我不是專家與正則表達式但我有一種直覺,認爲可能有另一個正則表達式以高效的方式提供相同的功能。

想知道是否有更好的方法(更有效的正則表達式)在c#中實現相同的分割?

+1

如何匹配'[(()] | [^()] +'而不是? – Gumbo

+0

Regex.Split(value1,@「[()] | [^()] +」) {string [7]} [0]:「」 [1]:「」 [2]:「 [3]:「」 [4]:「」「 [5]:」「 [6]:」「 – infinity

+0

匹配,而不是分割。 – Gumbo

回答

1

你可以嘗試這些令牌,而不是匹配:

Regex.Matches(value1, @"[()]|[^()]+") 

這裏的格局[()]|[^()]+匹配一個單一的(),或除()一個字符序列。