using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;

public class Regexp
{
    public static void Main(String[] args)
    {
        String text = fileToText("yahoo.htm");
//        String text = "It cost my 324 dollars to buy 72 papers.";
        foreach (String s in matches("\\shref\\s*=\\s*\"(.*?)\"", text, 0))
            Console.WriteLine(s);
    }

    public static String fileToText(String filePath)
    {
        StreamReader file = new StreamReader(filePath);
        String text = file.ReadToEnd();
        file.Close();
        return text;
    }

    public static IEnumerable matches(String pPattern, String pText, int pGroupId)
    {
        Regex r = new Regex(pPattern, RegexOptions.IgnoreCase | RegexOptions.Compiled);
        for (Match m = r.Match(pText); m.Success; m = m.NextMatch())
            yield return m.Groups[pGroupId].Value;
    }

    public static List<String> matchesAsList(String pPattern, String pText, int pGroupId)
    {
        List<String> lines = new List<String>();
        foreach (String line in matches(pPattern, pText, pGroupId))
            lines.Add(line);
        return lines;
    }

    public static String matchFirst(String pPattern, String pText, int pGroupId)
    {
        foreach (String line in matches(pPattern, pText, pGroupId))
            return line;
        return null;
    }
}


