正则表达式用白色空格分割

时间:2011-12-07 06:26:11

标签: c# regex

我有一个如下所述的字符串。

  

测试[0] =值1测试1 [0] =值2测试3 [0] =值3 ......等,

我想使用正则表达式将它们分开,如下所示

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

请你给我一些正则表达式,将一行字符串分成多行?

如果您需要对此问题进行更多说明,请与我们联系。

4 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

您需要在换行符之前或之后更准确地说明您允许的内容。如果每个边上必须有数字或字母(此处与=]相对),您可以执行的操作是搜索和替换:

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

答案 2 :(得分:0)

正则表达式:

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

替换表达式(仅举例):

$1 = $2 + chr(13)

答案 3 :(得分: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可以是除空白字符之外的任何内容。