Да, предваряя камни, которые в меня полетят. Так делать нельзя, неправильно и вообще некузяво. Но что я буду делать, если нормальных парсеров под .NET Framework 2.0 уже net, а задача маленькая — найти все теги <a>
или <img>
и выдрать из них, соответственно, значение атрибутов href
или src
.
public List<string> ParseTags(string Tag, string Property) { List<string> listBuf = new List<string>(); Regex reHref = new Regex(@"(?inx) <" + Tag + @" \s [^>]*" + Property + @"\s* = \s*"+ @"(?<q> ['""] )"+ @"(?<url> [^""]+ )"+ @"\k<q>"+ @"[^>]* >"); foreach (Match match in reHref.Matches(HTMLPage)) { listBuf.Add(match.Groups["url"].ToString()); } return listBuf; }
Это немного видоизмененное решение (добавил возможность подставлять в регулярное выражение тег и атрибут) из одной статьи на Хабре. Заметка, как обычно, от склероза.
Плюс добавлена функция выбора из найденного, уже без всяких регулярных выражений, с помощью string.Contains(<строка>)
.
public List<string> Select(string Pattern, List<string> inputList) { List<string> selectList = new List<string>(); foreach (string s in inputList) { if (s.Contains(Pattern)) { selectList.Add(s); } } return selectList; }