c# - 从字符串中获取最后一组数字的正则表达式

标签 c# regex

"abc_d1.txt" should get 0
"abc_d1_2.txt" should get 2
"abc_d1_14.txt" should get 14
"abc_d12_x2_156.txt" should get 156
这是我到目前为止所做的,但我没有得到正确的结果。
  string y = "tester_yg1.txt";
  string pattern = @"(\d+)(?!.*\d)";
  Regex rg = new Regex(pattern);
  var z = rg.Match(fullFileName).Value;
  Console.WriteLine($"z is {z}");

最佳答案

另一种选择是使用一组积极的环视

(?<=_[^\W\d_]\d+_?)\d*(?=\.\w+$)
说明
  • (?<=正向后视,断言直接在左边的是
  • _[^\W\d_]\d+_?匹配 _ , 除了数字或 _ 和 1+ 数字后跟可选的 _ 之外的字符字符

  • )近距离回顾
  • \d*匹配 0+ 个数字(也可以在没有数字时获取位置)
  • (?=正向前瞻,断言直接向右的是
  • \.\w+$匹配一个 .和 1+ 个单词字符直到字符串结尾

  • )关闭前瞻

  • .NET regex demo
    enter image description here

    关于c# - 从字符串中获取最后一组数字的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65501080/

    相关文章:

    c# - 通过 WCF 服务从接口(interface)引用方法

    regex - 数字范围的 Vim 正则表达式 - 不工作

    r - 如何通过R的逆模式提取子串?

    python - 无法在python3中使用正则表达式搜索 '\\n'

    c# - 如何使用 IHasManyConvention Fluent NHibernate 约定在 HasMany 映射上设置 PropertyRef?

    c# - 如果重写时未调用 base.OnCreateView(.....) 会怎样?

    c# - SQL Server 2016中列加密时如何查询数据

    regex - BASH 中的正则表达式

    php - preg_replace 用于特定模式(如果不存在)

    c# - 32 或 64 位机器