正则表达式的输入字符串是来自另一个字符串的临时数量的字符。因此它可以是输入字符串末尾的单词的不完整部分。正则表达式必须剪切单词的不完整部分和字符串末尾的空格。因为在这个字符串的末尾必须有整个单词。所以我写这个来削减最后一个字的不完整部分(C#):
Regex.Replace(s, @"([^\s]*){1}$", String.Empty)
如你所见,我使用空格作为正则表达式的标记来停止切割。 但是如何削减这个空间?它必须在同一个正则表达式中,因为我不想在这个简单的操作中使用另一个正则表达式或“修剪”函数。我知道使用TrimEnd更容易,但它并不优雅。所以这只是学术问题。 :)
答案 0 :(得分:2)
您不需要TrimEnd()
或正则表达式改进。只需使用Trim()
,就像这样:
s.Trim();
编辑:如果您还需要删除最后一个单词,并且您有LINQ,您可能会喜欢这样:
string[] split = s.Split(new char[] {' '});
s = split.Take(split.Length - 1).Aggregate((m, n) => m + ' ' + n);
答案 1 :(得分:0)
您可以只包含一个可选空格:
\s?([^\s]*){1}$
可以简化:
\s?\S*$