2011-12-07 106 views
0

我有一個字符串,如下所述。正則表達式與空格分割

試驗[0] =值1測試1 [0] =值2 Test3的[0] =值3 ....等。,

我想使用正則表達式以分開它們,如下

Test[0] = Value1 
Test1[0] = Value2 
Test3[0] = Value3 

你能給我一些正則表達式來將它們的一行字符串分成多行嗎?

請讓我知道你是否需要在這個問題上更多的澄清。

回答

3

嘗試這種情況:

String s = "Test[0] = Value1 Test1[0] = Value2 Test3[0] = Value3"; 
String result = Regex.Replace(s, @"(?<!=)\s(?!=)", "\r\n"); 

正則表達式(?<!=)\s(?!=)正在尋找一個空白字符(在\s,也許你想用一個空格來代替這一點,因爲\s還包含換行符。)有沒有=之前或之後,並取代它與\r\n

這會爲您的示例生成您期望的結果。

更新:的

,而不是與換行符替換序列周圍猜測,有在.net一個很好的捷徑來得到當前系統的換行符:Environment.NewLine

所以更改代碼:

String result = Regex.Replace(s, @"(?<!=)\s(?!=)", Environment.NewLine); 
+0

酷感謝Stema。這就是訣竅! – K2M

0

你需要在換行符之前或之後允許的內容更加具體。你可以做什麼,如果有必須在每邊的數字或字母(在這裏,而不是一個=])的空間,這是搜索和替換:

s/([\d\w])\s([\d\w])/\1\n\2/gi 
0

正則表達式:

(Test[\d]*\[[\d]+\])\s*\=\s*(\w+)\s* 

替換表達式(僅一個例子):

$1 = $2 + chr(13) 
0
 var results = Regex.Matches("Test[0] = Value1 Test1[0] = Value2 Test3[0] = Value3", @"[^\s]+\s*=\s*[^\s]+") 
      .OfType<Match>() 
      .Select(item => item.Value) 
      .ToArray(); 

這將匹配X = Y,其中x和y可以是除空白字符之外的東西。