// I know 1, 2, 3 is bad grouping name X(
private readonly static Regex LINK_REGEX = new Regex(
@"<a\s+[^>]*href\s*=\s*(?:(?<3>'|"")(?<1>[^\3>]*?)\3|(?<1>[^\s>]+))[^>]*>(?<2>.*?)</a>",
RegexOptions.IgnoreCase | RegexOptions.Compiled
);
public static void ExtractLinks(string text, ICollection<string> links)
{
LINK_REGEX.ApplyAllMatched(text, (m) => links.Add(m.Groups[1].Value));
}
Helper method which processes matched string for each.
public static void ApplyAllMatched(this Regex regex, string text, Actionapply) { for (var m = regex.Match(text); m.Success; ) { apply(m); m = m.NextMatch(); } }
コメント