我试图删除字符串中某些字符之间的空格:
element 1 : 200 :2 1 2 3 4 - 30 node 1:39
到
element 1:200:2 1 2 3 4 -30 node 1:39
删除的空格位于数字之间,包含:
或-
和数字之间。
到目前为止,我已经开始使用此正则表达式来定位数字之间的空格,并包含:
或-
。
Regex mySpace = new Regex(@"\W+ (:|-) +");
接下来我要做的是删除那些匹配中的空格。我怎么能这样做? 也许有一些更复杂的正则表达式只能直接匹配所需的空格,然后将它们替换成空字符串?
答案 0 :(得分:1)
以下正则表达式将完全匹配由:
分隔的数字之间的空格或-
之后的空格与第一个数字之间的空格。只需用空字符串替换匹配的空格。
(?<=\d)\s*(?=:)|(?<=:)\s+|(?<=-)\s+(?=\d)
您的C#代码将是,
string pattern = @"(?<=\d)\s*(?=:)|(?<=:)\s+|(?<=-)\s+(?=\d)";
string test = Regex.Replace("element 1 : 200 :2 1 2 3 4 - 30 node 1:39", pattern, "");
Console.WriteLine(test);
Console.ReadLine();
<强>输出:强>
element 1:200:2 1 2 3 4 -30 node 1:39
<强>解释强>
(?<=\d)\s*(?=:)
匹配后跟:
|
逻辑OR运算符。(?<=:)\s+
匹配:
|
逻辑OR运算符。(?<=-)\s+(?=\d)
将一个或多个空格与-
后跟一个数字匹配。答案 1 :(得分:1)
如果要使用自己的正则表达式,可以在替换部分中使用组。你的正则表达式捕获结肠或短划线,因为它是一个parentese。 因此,您可以使用$ 1替换匹配(从而删除空格):$ 1:
Regex mySpace = new Regex(@"\W+ (:|-) +");
mySpace.Replace(yourtext, "$1")
(如果你有几个小组,你可以使用1美元,2美元等)
Avinash Raj的答案更为复杂,但也许您以后更容易阅读。