C# 正则表达式以获取字符串中最后一个空格之后的任何内容

C# 正则表达式以获取字符串中最后一个空格之后的任何内容,c#,regex,C#,Regex,我有一个字符串,里面有一堆单词,我想要的是最后一个单词。这个的正则表达式是什么 例如: This is some sample words to work with 我只想使用上面字符串中的。一个简单得多的解决方案是使用拆分方法: string text = "This is some sample text to work with"; string last = text.Split(' ').Last(); 一个简单得多的解决方案是使用Split方法: string text = "T

我有一个字符串,里面有一堆单词,我想要的是最后一个单词。这个的正则表达式是什么

例如:

This is some sample words to work with

我只想使用上面字符串中的

一个简单得多的解决方案是使用
拆分方法:

string text = "This is some sample text to work with";
string last = text.Split(' ').Last();

一个简单得多的解决方案是使用
Split
方法:

string text = "This is some sample text to work with";
string last = text.Split(' ').Last();

如果您坚持使用正则表达式,那么以下内容将对您有所帮助

/[a-zA-Z]+$/

示例

Match m = Regex.Matches("This is some sample words to work with", "[a-zA-Z]+$")[0];
Console.WriteLine(m.Value);
=> with

如果您坚持使用正则表达式,那么以下内容将对您有所帮助

/[a-zA-Z]+$/

示例

Match m = Regex.Matches("This is some sample words to work with", "[a-zA-Z]+$")[0];
Console.WriteLine(m.Value);
=> with

我会使用
LastIndexOf
,这样性能会更好

string text = "This is some sample words to work with";
string last = text.Substring(text.LastIndexOf(' '));

当然,如果文本可能没有任何空格,您必须确保您没有尝试从-1索引中进行子串。

我将使用
LastIndexOf
,应该会执行得更好

string text = "This is some sample words to work with";
string last = text.Substring(text.LastIndexOf(' '));

当然,如果文本可能没有任何空格,您必须确保您没有尝试从-1索引中进行子字符串转换。

我想您正在寻找:

[\d-]+$

此处演示:

我想您正在寻找:

[\d-]+$

此处演示:

虽然我想您的需求已经有点晚了,但这应该可以:


将“[a-zA-Z]+$”替换为“[\S]+$”=>将使用所有非空格字符。

虽然我想您的需要有点晚了,但这应该可以:

将“[a-zA-Z]+$”替换为“[\S]+$”=>将使用所有非空格的字符。

每个原始问题(末尾没有数字)将获得“with”:

根据原始问题(末尾没有数字)获得“with”:



它必须是正则表达式吗<代码>输入。拆分(“”).Last()
就可以了。。另外,请分享您的尝试。为什么要在这里使用
Regex
?@Sybren-我知道其他方法。只是尝试使用/学习一些新的东西。为什么不使用
Regex
?它必须是Regex吗<代码>输入。拆分(“”).Last()
就可以了。。另外,请分享您的尝试。为什么要在这里使用
Regex
?@Sybren-我知道其他方法。只是尝试使用/学习一些新的东西。为什么不使用
Regex
?感谢您的回复。你知道在C#中使用它的更合适的方法吗?起初我并不认为这会与我在正则表达式方面的经验不同,但现在我明白了这可能是一个问题。所以字符串中有数字,这些实际上是我想要得到的。字符串实际上是这样的:
这里是一些文本31
或者
这里是一些更多的文本29-31
我总是想得到数字。所以要么
31
要么
29-31
。很抱歉给您带来不便。你能帮忙吗?谢谢你的回复。你知道在C#中使用它的更合适的方法吗?起初我并不认为这会与我在正则表达式方面的经验不同,但现在我明白了这可能是一个问题。所以字符串中有数字,这些实际上是我想要得到的。字符串实际上是这样的:
这里是一些文本31
或者
这里是一些更多的文本29-31
我总是想得到数字。所以要么
31
要么
29-31
。很抱歉给您带来不便。你能帮个忙吗?我不是想争论,我只是想知道为什么一个比另一个更好?我知道如何用其他方法来实现这一点,但在我的问题中,我用
Regex
…Regex能够处理非常复杂的事情,但它通常不如特别为场景编写的代码好。因为这个例子没有正则表达式非常简单-在这里没有它会更好。当你需要确保字符串是电子邮件(或任何其他复杂的验证)时,regex是你的朋友。我不是想争论,我只是想知道为什么一个字符串比另一个更好?我知道如何用其他方法来实现这一点,但在我的问题中,我用
Regex
…Regex能够处理非常复杂的事情,但它通常不如特别为场景编写的代码好。因为这个例子没有正则表达式非常简单-在这里没有它会更好。当您需要确保字符串是电子邮件(或任何其他复杂的验证)时,regex是您的朋友。起初我并不认为这会与我在regex方面的经验不同,但现在我明白这可能是一个问题。所以字符串中有数字,这些实际上是我想要得到的。字符串实际上是这样的:
这里是一些文本31
或者
这里是一些更多的文本29-31
我总是想得到数字。所以要么
31
要么
29-31
。很抱歉给您带来不便。你能帮忙吗?我想我们赢了。非常感谢。这些信息将有助于避免“这不适合正则表达式”的评论:)起初我并不认为这会与我在正则表达式方面的经验不足有所不同,但现在我明白了这可能是一个问题。所以字符串中有数字,这些实际上是我想要得到的。字符串实际上是这样的:
这里是一些文本31
或者
这里是一些更多的文本29-31
我总是想得到数字。所以要么
31
要么
29-31
。很抱歉给您带来不便。你能帮忙吗?我想我们赢了。非常感谢。这些信息将有助于避免“这不适合正则表达式”的评论:)抱歉进行了不必要的编辑。我无意中否决了你的答案,除非进行了编辑,否则我是不会修改的。对于不必要的编辑,我深表歉意。我无意中否决了你的答案,除非进行编辑,否则我不会修改它。