删除一个空格的正则表达式是什么? 例如:
H e l l o W o r l d ----> Hello World
(请注意,Hello World之间还有一个空格。它之间有两个空格开始)
仅供参考,我正在使用C#正则表达式: 以前我做过这样的事情,但对于上述情况它不能正常工作:
Regex pattern = new Regex(@"[ ]{2,}");
pattern.Replace(content, @" ")
答案 0 :(得分:5)
要从一个或多个空格的所有组中删除一个空格,请使用
pattern = Regex.Replace(content, " ( *)", "$1");
要将 n 空格更改为floor( n / 2)空格,请使用
pattern = Regex.Replace(content, " ( ?)", "$1");
我尝试添加示例,但stackoverflow甚至在内联代码跨度中整合了空白。
解释,按要求:第一个找到一个后跟零个或多个空格的空格,并用零个或多个空格替换它,将长度减少1.第二个找到每个一个或两个空格的组并将其替换为零或者一个空格,一次更换1到0,一次更换2到1,两次更换3到2等。
答案 1 :(得分:2)
尝试使用负向前看。
Regex pattern = new Regex(@"\s(?!\s)");
Console.WriteLine(pattern.Replace(content, ""))
答案 2 :(得分:1)
如果我理解你想为一个或多个连续空格的每次出现删除一个空格。
为此,您需要创建一个正则表达式,该正则表达式匹配每个此类事件,将除一个空格之外的所有空格放入捕获组,然后将每个事件替换为捕获组。因此,如果彼此相邻有2个空格,则它们被找到为一个匹配,第二个空间进入捕获组。因此,在更换后,两个空间减少到一个空间。
Regex pattern = new Regex(@" ( *)");
String newString = pattern.Replace("H e l l o W o r l d", "$1");
// newString == "Hello World"
答案 3 :(得分:0)
匹配空格后跟非空格并删除这些空格。
Regex.Replace(input, @"(\s)(\S)", @"$2");
它看起来像是一个字符串,每个字符后面都有一个空格。如果是这样,那么你可以通过只检索字符串中的偶数索引字符来获得原始字符串。
var input = "H e l l o W o r l d ";
var res = String.Join("", input.Where((c, i) => (i % 2) == 0));
答案 4 :(得分:0)
另一种方法是使用匹配评估器来使用两个字符匹配:
string s = Regex.Replace("H e l l o W o r l d", @"\s\S", x => x.Value[1].ToString());
答案 5 :(得分:0)
考虑到问题的性质,决不是一般解决方案,但在这种特殊情况下,看起来好像你可以通过删除任何一侧触及单词字符的空格来逃避:例如:
Regex.Replace(content, " \b", "");
答案 6 :(得分:-1)
表达式“[\ s] {1}”应该这样做