Das folgende Regex-Muster funktioniert für mich und sollte für PCRE Regex gut geformt sein:
<img(\s*(?!src)([\w\-])+=([\"\'])[^\"\']+\3)*\s*\/?>
- Um es aufzuschlüsseln, fangen Sie mit dem Literal
<img
an und entsprechen dann einem\s*
beliebigen Leerzeichen[\r\n\t\f ]
null oder unbegrenzt. - Das
(?!src)
ist die negative Vorschau, die dafür sorgt, dass die Zeichenfolgesrc
wird nicht abgestimmt. - Die zweite Capture-Gruppe
([\w\-])+
sucht[a-zA-Z0-9_]
zwischen einem und beliebig vielen Zeitpunkten und ist gierig (finden Sie sie so oft wie möglich). Das\-
ist ein wörtliches Suchen nach einem Bindestrich, falls er sich innerhalb des<img>
Tag-Paares befindet. - Das
=
ist eine wörtliche Suche nach einem Gleichheitszeichen. - Die dritte Capture-Gruppe
([\"\'])[^\"\']+\3
versucht, entweder ein einfaches oder doppeltes Anführungszeichen zu finden, dann etwas anderes, ABER ein einfaches oder doppeltes Anführungszeichen (ein- oder mehrmals) und dann die\3
Übereinstimmungen, die als dritte Capture-Gruppe gefunden wurden (entweder ein einfaches oder doppeltes Anführungszeichen) .) - Schließlich entspricht das Null- oder unbegrenzte
\s*
Leerzeichen jedem Leerzeichen[\r\n\t\f ]
, das\/?
gleiche>
trifft einmal genau auf einen Schrägstrich zu und das ist die schließende Klammer der gesamten Angelegenheit.
Regex macht Spaß. :-)