Следующий шаблон регулярных выражений работает для меня и должен быть правильно сформирован для регулярных выражений PCRE:
<img(\s*(?!src)([\w\-])+=([\"\'])[^\"\']+\3)*\s*\/?>
- Чтобы разбить его, вы начинаете с литерала
<img
, а затем\s*
сопоставляете любой символ пробела[\r\n\t\f ]
ноль или неограниченное количество раз. (?!src)
Является отрицательным опережением, который гарантирует, что строкаsrc
является НЕ совпадает.- Вторая группа захвата
([\w\-])+
ищет любой из[a-zA-Z0-9_]
одного и неограниченного количества раз и является жадным (найдите его столько раз, сколько возможно), и\-
это литерал, ищущий дефис, если он существует где-то в<img>
паре тегов. - Это
=
буквальный поиск знака равенства. - Третья группа захвата
([\"\'])[^\"\']+\3
ищет совпадения с одинарной или двойной кавычкой, затем что угодно, НО одинарная или двойная кавычка (один или несколько раз), а затем\3
совпадает с тем, что было найдено в качестве третьей группы захвата (с одинарной или двойной кавычкой). .) - Наконец,
\s*
совпадает с любым символом пробела[\r\n\t\f ]
ноль или неограниченное количество раз,\/?
прямая косая черта совпадает ровно один раз, и>
это заключительная скобка всего дела.
Регекс это весело. :-)