Ответ 1
Добавьте \s?
, если пробел может быть разрешен.
\s означает пробел
? говорит, что предыдущий символ может возникать один раз или не встречаться.
Если разрешено более одного пробела и является необязательным, используйте \s*
.
* говорит, что предыдущий символ может начинаться с нуля или более раз.
'#<a href\s?="(.*?)" title\s?="(.*?)"><img alt\s?="(.*?)" src\s?="(.*?)"[\s*]width\s?="150"[\s*]height\s?="(.*?)"></a>#'
позволяет указать дополнительное пространство между именем атрибута и =.
Если вы хотите дополнительное пространство после =
, добавьте также \s?
после него.
Аналогично, везде, где у вас есть необязательные символы, вы можете использовать ?
, если максимальное вхождение 1 или *
, если максимальное количество событий не ограничено, следуя необязательному символу.
И ваша фактическая проблема была [\s*]
, которая вызывает появление пробела или a *, поскольку символы, заключенные в [
и ]
, являются символьным классом. Класс символов допускает появление любого из его членов один раз (поэтому удалите *
из него), и если вы добавите квантификатор (?
, +
, *
и т.д.) После ]
любого символа (ов) в классе символов может происходить согласно квантификатору.