O seguinte padrão regex funciona para mim e deve ser bem formado para o Regex PCRE:
<img(\s*(?!src)([\w\-])+=([\"\'])[^\"\']+)*\s*\/?>
- Para dividi-lo, comece com o literal
<imge, em seguida, o\s*corresponde a qualquer caractere de espaço em branco[\r\n\t\f ]zero ou tempos ilimitados. - O
(?!src)é o lookahead negativo, que garante que a stringsrcseja NOT correspondida. - O segundo grupo de captura
([\w\-])+procura por[a-zA-Z0-9_]entre um e ilimitado e é ganancioso (encontre o máximo de vezes possível), e o\-é um literal procurando um hífen no caso existe em algum lugar dentro do par de tags<img>. - O
=é uma pesquisa literal por um sinal de igual. - O terceiro grupo de captura,
([\"\'])[^\"\']+procura corresponder a uma aspa simples ou dupla, e depois qualquer coisa MAS uma aspa simples ou dupla (uma ou mais vezes) e, em seguida,corresponde o que quer que tenha sido encontrado como o terceiro grupo de captura (uma citação simples ou dupla). - Finalmente, o
\s*corresponde a qualquer caractere de espaço em branco[\r\n\t\f ]zero ou tempos ilimitados, o\/?corresponde a uma barra exatamente uma vez e o>é o colchete de fechamento de todo o caso.
Regex é divertido. : -)