将regex结果返回到数组

时间:2009-12-10 15:56:32

标签: c# regex arrays

我正在开展一个小项目,这是我第一次使用正则表达式

我尝试过使用.match或.matches但是我没有看到任何可以让我将正则表达式查询的结果返回给数组的选项。

感谢

5 个答案:

答案 0 :(得分:2)

我没有测试过,但是这样的事情会起作用:

public static IEnumerable<Match> GetMatches(Regex regex, string input)
{
    var m = regex.Match(input);
    while (m.Success)
    {
        yield return m;

        m = m.NextMatch();
    }
}

答案 1 :(得分:1)

如果你使用Regex.Matches(input,regex,regexoptions),它将返回一系列匹配,然后你可以迭代。

用于开发(http://msdn.microsoft.com/en-us/library/k2604h5s(VS.71).aspx

的集合被视为更好的选择

答案 2 :(得分:1)

使用Matches CopyTo方法复制到您选择的数组。

看看这个

MatchCollection.CopyTo Method

编辑以发表评论

像这样的东西

Regex rg = new Regex("YourExpression");
MatchCollection matcheCollection = rg.Matches("Your String");
Match[] matches = new Match[matcheCollection.Count];
matcheCollection.CopyTo(matches, 0);

答案 3 :(得分:1)

Regex rg = new Regex("YourExpression");

Match[] result = rg.Matches("Your String").OfType<Match>().ToArray();

可以让您不必分别定义Match []。

答案 4 :(得分:1)

要将Regex的匹配作为字符串数组返回,您可以执行此操作。

    string[] stringArray; // this this will become our String array,

    Regex regex = new Regex(@"<your regex goes here>");
    List <String> listTemp = new List<string>();
    foreach (Match matchItem in regex.Matches(<your string to spit/match>))
    {
       listTemp.Add(matchItem.ToString());
    }
    stringArray = listTemp.ToArray<String>();

希望这有帮助!