首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在字符串中查找最后一个数字的正则表达式是什么?

在字符串中查找最后一个数字的正则表达式是什么?
EN

Stack Overflow用户
提问于 2013-06-11 21:47:21
回答 4查看 6.4K关注 0票数 4

我的大脑一定很疲惫,但我不能让它工作,而且我几乎没有使用正则表达式的经验。

我有一个类似于"gfdsgfd354gfdgfd55gfdgfdgfs9gfdgsf“的字符串。

我需要一个正则表达式来查找字符串中的最后一个数字-在本例中是"9“。

编辑

我应该说得更清楚些,但是,正如我所说的,我很疲惫。

它是在最后一个数字之前插入一个连字符。我正在使用C# Regex.Replace。使用Dave Sexton已经提出的想法,我尝试了以下方法,但没有成功:

代码语言:javascript
复制
    private string InsertFinalDigitHyphen(string data)
    {
        return Regex.Replace(data, @"(\d)[^\d]*$", " $1");
    }

有了这个,我可以处理"ABCDE1FGH“,目的是得到"ABCDE-1FGH”,但实际上我得到了"ABCDE-1“。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-06-11 21:48:01

你可以使用这个:

代码语言:javascript
复制
(\d)[^\d]*$

编辑:

您最初只提到了匹配,没有语言,也没有替换。对于C#替换,您应该使用

代码语言:javascript
复制
private string InsertFinalDigitHyphen(string data) {
    return Regex.Replace(data, @"(\d)(\D*)$", " $1$2");
}
票数 4
EN

Stack Overflow用户

发布于 2013-06-11 21:56:24

我总是发现正则表达式很难读懂,所以你可以用下面的LINQ语句来替代它:

代码语言:javascript
复制
string str = "gfdsgfd354gfdgfd55gfdgfdgfs9gfdgsf";
var lastDigit = str.Last(char.IsDigit);

输出:

代码语言:javascript
复制
9

要在这之前插入连字符,可以使用LastIndexOf而不是Last,并使用该索引在字符串中的正确位置插入连字符。

票数 5
EN

Stack Overflow用户

发布于 2013-06-11 21:52:32

如果它是您想要的最后一个数字,请使用以下命令:

代码语言:javascript
复制
(\d)[^\d]*$

如果它是最后一组数字,则使用以下命令:

代码语言:javascript
复制
(\d+)[^\d]*$

编辑:

您需要选择捕获组(括号中的位)-对于c#,我认为应该是这样的:

代码语言:javascript
复制
Regex.Matches("gfdsgfd354gfdgfd55gfdgfdgfs9gfdgsf", '(\d)[^\d]+$')[0].Groups[1].Captures[0].Value

或者,为了避免捕获组,您可以在regex后面进行查看,如下所示:

代码语言:javascript
复制
\d(?=[^\d]+$)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17045765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档