【问题标题】:How do I capture this value using Regex? [duplicate]如何使用正则表达式捕获此值? [复制]
【发布时间】:2014-07-04 11:28:33
【问题描述】:

我有这样的文字:“Showing: 16 of 11543 course results

我想捕获 16 和 11543。这个值可能不同,但它们的位置总是相同的。我可以拆分此文本,但它看起来不太好,并且将来可能导致错误。有什么方法可以使用Regex 实现这一目标?

【问题讨论】:

  • Showing: (\d+) of (\d+) course results - 以供将来参考,请在此处插入:regexhero.net/tester 并单击“.net”以获取生成的代码。
  • 这是一个超级谷物指控,你有证据吗?我认为投反对票是因为您付出的努力很少,基本上要求我们做您的工作。
  • 我没有,但期望问题显示已尝试过的内容,而不是简单地问我如何...
  • @Jack 你是个有趣的杰克。否决我对其他问题的回答,因为您无法接受正当的批评。此外,它几乎不需要更多的努力,因为您显然没有费心学习正则表达式的基础知识,也没有结合前 3 个链接中可用的知识。所有这些都足以解决您的问题
  • 我最近的两个答案也被否决了,无论是谁做的都非常成熟。我真的会错过这 4 个声望点。我不明白你为什么认为我听起来很激动,我只是试图解决你的问题。 “使用正则表达式解析数字”已被问过无数次,只需使用搜索即可。

标签: c# .net


【解决方案1】:

这是正则表达式:

Showing: (\d{1,10}) of (\d{1,10}) course results

捕获组是您的第一个号码,捕获组 2 是您的第二个号码。捕获组由方括号 () 定义,\d 是捕获数字,花括号中的数字定义要捕获的数字的可能长度。

因此,在这种情况下,它将检测至少包含 1 位且最多 10 位数字的数字。

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string yourInputString = "Showing: 16 of 11543 course results";
        Match match = Regex.Match(yourInputString, @"Showing: (\d{1,10}) of (\d{1,10}) course results", RegexOptions.IgnoreCase);
        if (match.Success)
        {
            string firstNum = match.Groups[1].Value; // 16
            string secondNum = match.Groups[2].Value; // 11543
        }
    }
}

【讨论】:

    【解决方案2】:

    有很多方法可以解决这个问题...另一种方法可以找到所有数字组:

    string text = "Showing: 16 of 11543 course results";
    Regex re = new Regex("(\\d+)");
    MatchCollection mc = re.Matches(text);
    foreach(var match in mc) 
    {
      Console.WriteLine(match);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-28
      • 1970-01-01
      • 2013-04-20
      • 2014-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-06
      相关资源
      最近更新 更多