2011-12-07 86 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可以是除空白字符之外的东西。