繁体   English   中英

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

[英]Get string after the last comma or the last number using Regex in C#

对于此示例,如何使用正则表达式获取最后一个逗号或最后一个数字之后的字符串:

  • "Flat 1, Asker Horse Sports", -- 在 "," 后得到字符串结果: "Asker Horse Sports"
  • "9 Walkers Barn" -- 在 "9" 结果后得到字符串:Walkers Barn

我需要该正则表达式来支持两种情况或不同的正则表达式规则,每个 / 情况。

我试过/,[^,]*$/(.*),[^,]*$来获取最后一个逗号之后的字符串,但没有运气。

您可以使用

[^,\d\s][^,\d]*$

请参阅正则表达式演示(和.NET 正则表达式演示)。

细节

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

在 C# 中,您还可以使用RegexOptions.RightToLeft选项告诉正则表达式引擎从字符串末尾搜索匹配项(以使正则表达式匹配更高效。尽管在这种情况下,如果输入字符串很短,则可能没有必要) ):

var output = Regex.Match(text, @"[^,\d\s][^,\d]*$", RegexOptions.RightToLeft)?.Value;

您在(.*),[^,]*$的捕获组走在正确的轨道上,但该组应该是您正在寻找的部分。

如果必须存在逗号或数字,您可以匹配直到最后一次出现它们中的任何一个,并捕获捕获组中的后续内容。

^.*[\d,]\s*(.+)$
  • ^字符串开始
  • .*匹配除换行符以外的任何字符 0+ 次
  • [\\d,]匹配,或数字
  • \\s*匹配 0+ 个空白字符
  • (.+)捕获组 1 ,匹配除换行符以外的任何字符 1+ 次
  • $字符串结尾

.NET 正则表达式演示| C# 演示

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM