Не используйте регулярное выражение для разбора xml или html. Это не стоит. Я дам вам читать this post, и это похоже на выражение, но главное, чтобы иметь в виду, вы можете столкнуться с множеством проблем с регулярным выражением и html.
Итак, вместо этого вы должны использовать действительный html/xml парсер! Для начала используйте XElement
, класс, встроенный в инфраструктуру .net.
string input = "<iframe width=\"420\" height=\"315\" src=\"//www.youtube.com/embed/8GRDA1gG8R8\" frameborder=\"0\" allowfullscreen=''></iframe>";
XElement html = XElement.Parse(input);
string src = html.Attribute("src").Value;
Это позволит src
иметь значение //www.youtube.com/embed/8GRDA1gG8R8
. Затем вы можете разбить это, чтобы получить от него все, что вам нужно.
Следует также отметить, что ваш ввод недействителен xml. allowfullscreen
не имеет значения, поэтому я добавил =''
.
Если вам нужно усложниться, например, ваш ввод, используйте парсер HTML (XElement
предназначен для xml). Используйте Html Agility Pack как это (используя предыдущий пример):
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(input);
string src = doc.DocumentNode
.Element("iframe")
.Attributes["src"]
.Value;
Этот анализатор более терпим для недействительных или неправильных (или просто нерегулярными) входов. Это полностью проанализирует ваш исходный ввод (так что отсутствует =''
).
Почему вы хотите использовать 'Regex' здесь? Поскольку у него есть структура XML, почему бы не передать его экземпляру 'XDocument'? –
[Obligitory «не анализировать html с регулярным выражением») (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags). Действительно, вместо этого используйте парсер html. – gunr2171
Конечно, это HTML, глупый я. В последнее время я работаю с XML! Лучше использовать синтаксический анализатор HTML. –