首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C#中使用Regex在最后一个逗号或最后一个数字之后获取字符串

在C#中使用Regex在最后一个逗号或最后一个数字之后获取字符串
EN

Stack Overflow用户
提问于 2020-10-23 14:02:08
回答 2查看 205关注 0票数 3

如何使用regex获得最后一个逗号或最后一个数字之后的字符串:

  • “第1版,Asker Horse Sports","Asker Horse Sports”,“Asker Horse Sports”
  • "9步行者仓“

我需要那个正则表达式来支持这两种情况,或者支持不同的正则表达式规则。

我尝试/,[^,]*$/(.*),[^,]*$在最后一个逗号之后得到字符串,但是没有运气。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-23 14:03:50

您可以使用

代码语言:javascript
复制
[^,\d\s][^,\d]*$

请参阅regex演示 (和.NET regex演示)。

详细信息

  • [^,\d\s] -除了逗号、数字和空格以外的任何字符
  • [^,\d]* -除了逗号和数字以外的任何字符
  • $ -字符串的末端。

在C#中,您还可以告诉regex引擎使用RegexOptions.RightToLeft选项从字符串末尾搜索匹配(以提高regex匹配的效率。虽然在这种情况下,如果输入字符串是短的,则可能没有必要):

代码语言:javascript
复制
var output = Regex.Match(text, @"[^,\d\s][^,\d]*$", RegexOptions.RightToLeft)?.Value;
票数 3
EN

Stack Overflow用户

发布于 2020-10-23 14:18:08

您在(.*),[^,]*$中正确地跟踪了捕获组,但是这个组应该是您要寻找的部分。

如果必须有逗号或数字表示,您可以匹配直到它们中的最后一次出现,并捕获捕获组中接下来的内容。

代码语言:javascript
复制
^.*[\d,]\s*(.+)$
  • 字符串的^开始
  • .*匹配除换行符0+时间以外的任何字符
  • [\d,]匹配,或数字
  • \s*匹配0+空格字符
  • (.+)捕获组1,匹配除换行符1+时间以外的任何字符
  • 字符串的$末端

.NET regex演示 x- C#演示

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64501467

复制
相关文章

相似问题

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