2011-01-17 2 views
0

У меня есть два регулярных регрессии. Я хотел бы объединиться в один для игр с производительностью, но не знаю, как достичь. Первое выражение находит все изображения в html, второе - находит все кнопки ввода изображения типа.Комбинировать регулярное выражение

  1. Regex.Matches(html, @"<img[^>]*?src\s*=\s*[""']?([^'"" >]+?)[ '""][^>]*?>", RegexOptions.IgnoreCase | RegexOptions.Singleline);
  2. Regex.Matches(html, @"<input[^>]*?src\s*=\s*[""']?([^'"" >]+?)[ '""][^>]*?>", RegexOptions.IgnoreCase | RegexOptions.Singleline);

Как я могу объединить их?

+0

Регулятор для анализа HTML не является хорошим. – Rozuur

ответ

0

То, как вы написали, немного неоднозначно ... но из того, что я могу сказать, вам нужен список, содержащий как изображения, так и кнопки ввода типа изображения. (Не уверены, что у вида входной кнопки типа изображений

, так что вы можете поставить скобки и ОШ между

т.е. .. (regex1 |? Regex2)

в зависимости, как конкретное содержимого из тегов вы можете также иметь что-то вроде

<(?:img|input)[^>]*?src\s*=\s*[""']?([^'"" >]+?)[ '""][^>]*?> 
+0

Лучше сделайте это: '(regex1) | (regex2)' – leppie

1

вы должны рассмотреть с помощью Html Agility пакет для разбора HTML документы быстрее и правильно:

http://htmlagilitypack.codeplex.com/

+0

Да, я бы предпочел пойти с этим, но из-за ограничений лицензии я не могу. – amateur

+0

@Niall: Публичная лицензия Ms не сильно отличается от GNU, поэтому вы можете использовать и распространять ее. Вы можете посмотреть подробности здесь: http://stackoverflow.com/questions/1424307/how-does-ms-pl-license-work – honibis

Смежные вопросы