我有一个字符串,如下所述。正则表达式与空格分割
试验[0] =值1测试1 [0] =值2 Test3的[0] =值3 ....等。,
我想使用正则表达式以分开它们,如下
Test[0] = Value1
Test1[0] = Value2
Test3[0] = Value3
你能给我一些正则表达式来将它们的一行字符串分成多行吗?
请让我知道你是否需要在这个问题上更多的澄清。
我有一个字符串,如下所述。正则表达式与空格分割
试验[0] =值1测试1 [0] =值2 Test3的[0] =值3 ....等。,
我想使用正则表达式以分开它们,如下
Test[0] = Value1
Test1[0] = Value2
Test3[0] = Value3
你能给我一些正则表达式来将它们的一行字符串分成多行吗?
请让我知道你是否需要在这个问题上更多的澄清。
尝试这种情况:
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);
你需要在换行符之前或之后允许的内容更加具体。你可以做什么,如果有必须在每边的数字或字母(在这里,而不是一个=
或]
)的空间,这是搜索和替换:
s/([\d\w])\s([\d\w])/\1\n\2/gi
正则表达式:
(Test[\d]*\[[\d]+\])\s*\=\s*(\w+)\s*
替换表达式(仅一个例子):
$1 = $2 + chr(13)
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可以是除空白字符之外的东西。
酷感谢Stema。这就是诀窍! – K2M