正则表达式 returns 一个列表

Regex that returns a list

我正在查找一个字符串,它可以有两个可能的值:

  1. stuff 1
  2. grouped stuff 1-3

我不太熟悉使用正则表达式,但我知道如果使用得当它会非常强大。如果这个问题听起来很荒谬,请原谅我。我想知道是否有可能有某种正则表达式代码只留下我的字符串的数字(例如在这种情况下 11-3)但也许如果它是这样的例子1-3 我可以 return 将 13 分别传递给函数以获取中间值。

我希望我说得有道理。很难用语言表达我正在寻找的东西。如果有人需要任何进一步的说明,我会非常乐意回答 questions/edit 我自己的问题。

要创建字符串 y 中的数字列表,请使用以下命令:

var listOfNumbers = Regex.Matches(y, @"\d+")
                           .OfType<Match>()
                           .Select(m => m.Value)
                           .ToList();

这是完全可能的,但最好用两个单独的正则表达式来完成,比如 SingleRegexRangedRegex - 然后检查一个或另一个,并在结果为 [= 时传递给函数12=].

只要您正在检查 "numbers in a specific place",那么额外的数字就不会混淆您的算法。还有几个正则表达式测试器,一个简单的 google 搜索将为您提供一个界面来检查各种语法和匹配项。

您只是想遍历字符串中的所有数字吗?

这是一种可以在正则表达式中循环抛出每个匹配项的方法。

using System;
using System.Text.RegularExpressions;

public class Program
{
    public static void Main()
    {
        Regex r = new Regex(@"\d+");
        string s = "grouped stuff 1-3";

        Match m = r.Match(s);

        while(m.Success) 
        {
            string matchText = m.Groups[0].Value;
            Console.WriteLine(matchText);
            m = m.NextMatch();
        }   
    }

}

这输出

1

3