C# 除了最后一个单词外,解析所有单词的正则表达式是什么?
我想匹配整个字符串,除了最后一个单词。i、 e.为了C# 除了最后一个单词外,解析所有单词的正则表达式是什么?,c#,regex,C#,Regex,我想匹配整个字符串,除了最后一个单词。i、 e.为了 This is my house 匹配的字符串应该是这是我的。这个正则表达式是什么?对于这个任务,您确实不需要regexp,删除从最后一个空格到字符串末尾的所有内容,您就可以得到所需的内容。如果它以空格结尾(根据示例),您可以将其定义为: ^(.*)\s 这将删除结尾处的空白,我认为这是理想的效果。这应该可以做到: ^([\w ]*) [\w]+$ ^是行的开始 ([\w]*)是由任意数量的字母和空格组成的组 \w+是后跟一个或多个单
This is my house
匹配的字符串应该是
这是我的
。这个正则表达式是什么?对于这个任务,您确实不需要regexp,删除从最后一个空格到字符串末尾的所有内容,您就可以得到所需的内容。如果它以空格结尾(根据示例),您可以将其定义为:
^(.*)\s
这将删除结尾处的空白,我认为这是理想的效果。这应该可以做到:
^([\w ]*) [\w]+$
^
是行的开始
([\w]*)
是由任意数量的字母和空格组成的组
\w+
是后跟一个或多个单词字符的空格
$
是一行的结尾。您可以使用拆分
并执行以下操作-
var text = "This is my house";
var arr = text.Split(' ');
var newtext = String.Join(" ",arr.Take(arr.Length-1));
就我个人而言,对于这样一个简单的任务,我会选择一些不那么不透明的东西:
var words = Regex.Split("this is my house",@"\s");
var allButLastWord = string.Join(" ",words.Take(words.Length-1));
除非你下定决心要使用正则表达式。对于这样一个简单的操作来说似乎有点过火。一个强大的解决方案:
(?!\s)(.+)(?=\s)
看到它在工作吗 例如:“5小时”、“5小时”、“25分钟”、“25分钟” 解释
- 负前瞻
(?!\s)
断言下面的正则表达式不匹配
匹配任何空白字符(等于\s
)[\r\n\t\f\v]
- 第一捕获组
(.+)
匹配任何字符(行终止符除外)+
量词-在一次和无限次之间进行匹配,尽可能多地匹配,根据需要返回(贪婪)+
- 正向前瞻
(?=\s)
断言下面的正则表达式匹配
匹配任何空白字符(等于\s
)[\r\n\t\f\v]
^(?:[\w]*)(?=[\w]+$)
,因此匹配值适合于从组中进行搜索。或者更简单:^.*(=[\w]+$)
。你可以允许标点符号以:^..*(=[\w]+[.?!]?$)
(.+)(?=\w)
:除了最后一个单词以外的所有单词都同意,如果它这么简单,myString.SubString(0,myString.LastIndexOf(“”))应该这样做。
string GetAllWordsExceptLast (string original)
{
original = original.Trim();
return original.Substring(0, original.LastIndexOf(' '));
}