解析除最后一个单词外的所有单词的正则表达式是什么
本文关键字:单词 正则表达式 是什么 最后一个 单词外 | 更新日期: 2023-09-27 18:11:14
我想匹配除了最后一个单词之外的整个字符串。即
This is my house
匹配的字符串应该是CCD_ 1。这个的正则表达式是什么?
这应该做到:
^(['w ]*) ['w]+$
^
是线路的起点
(['w ]*)
是一组任意数量的字母和空格
'w+
是后面跟一个或多个单词字符的空格
$
是行的末尾。
您真的不需要regexp来执行此任务,删除从最后一个空格到字符串末尾的所有内容,您就可以获得所需内容。
就我个人而言,对于这样一个简单的任务,我会选择不那么不透明的东西:
var words = Regex.Split("this is my house",@"'s");
var allButLastWord = string.Join(" ",words.Take(words.Length-1));
如果它以空白结尾(如示例所示(,则可以将其定义为:
^(.*)'s
这将删除末尾的空白,我认为这是理想的效果。
您可以使用Split
并执行类似的操作-
var text = "This is my house";
var arr = text.Split(' ');
var newtext = String.Join(" ",arr.Take(arr.Length-1));
string GetAllWordsExceptLast (string original)
{
original = original.Trim();
return original.Substring(0, original.LastIndexOf(' '));
}
除非你真的下定决心要使用正则表达式。对于这样一个简单的操作来说,似乎有点过头了。
一个强大的解决方案修剪前导空间:
(?!'s)(.+)(?='s)
在regex101.com 上查看
示例:">5小时">5小时">225分钟">225分钟";
解释
-
负面展望
(?!'s)
断言下面的Regex不匹配's
匹配任何空白字符(等于This is my
0( -
第一捕获组
(.+)
.+
匹配任何字符(行终止符除外(+
量化器——在一次和无限次之间匹配,尽可能多次,根据需要回馈(贪婪(
-
积极展望
(?='s)
断言下面的Regex匹配's
匹配任何空白字符(等于['r'n't'f'v ]
(