我有一个如下所述的字符串。
测试[0] =值1测试1 [0] =值2测试3 [0] =值3 ......等,
我想使用正则表达式将它们分开,如下所示
Test[0] = Value1
Test1[0] = Value2
Test3[0] = Value3
请你给我一些正则表达式,将一行字符串分成多行?
如果您需要对此问题进行更多说明,请与我们联系。
答案 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可以是除空白字符之外的任何内容。