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