#regex #replace
#регулярное выражение #заменить
Вопрос:
Итак, у меня есть база данных с мультисайта WordPress. Я выполняю поиск и замену в таблице с помощью регулярного выражения, и мне нужно создать все src с определенным именем изображения (image2.jpg ) указать на один каталог. Вот пример. Возможно, у меня:
src="http://domain.com/path/weird/different/image2.jpg
и
src="http://domain2.com/path2/differentpath/helloworld/image2.jpg
Мне нужно заменить все между src="
и /image.jpg with a specific domain/filepath
.
Я не силен в регулярных выражениях, я стараюсь, но это просто не моя сильная сторона. Любая помощь приветствуется.
Ответ №1:
Поиск: src="[^"]*image2.jpg
Заменить: src="http://mydomain.com/mypath/image2.jpg
[^"]*
Съедает любые символы, которые не являются двойными кавычками.
В демо-версии см. Панель замен внизу.
На PHP (должен работать с WordPress):
$replaced = preg_replace('/src="[^"]*image2.jpg/',
'src="http://mydomain.com/mypath/image2.jpg',
$str);
Комментарии:
1. спасибо, я собираюсь попробовать это, я делаю это в запросе mysql из командной строки centos. Недавно я установил систему preg_replace для mysql
2. еще не тестировался, был занят, и этот клиент был довольно, будет тестироваться на этой неделе.
3. К вашему сведению, добавлена демонстрация (см. Замены внизу)
4. @ChrisFlannagan На самом деле, поскольку zx81 также добавил демонстрацию регулярных выражений, почему бы вам не попробовать?
Ответ №2:
Используйте это регулярное выражение:
/(?<=src=")(.*?)(?=Q/image2.jpgE)/
Это соответствует всему, что находится между « src="
» и « /image2.jpg
«, поэтому вы можете заменить это своим конкретным domain/filepath
.
В зависимости от вашего языка / инструмента вам, возможно, придется избегать ввода /
/image2.jpg
.
> Positive Lookbehind - assert that match must be following 'src="'
|
| Anything > Positive Lookahead - assert that match
| | | is before '/image2.jpg' literally.
/(?<=src=")(.*?)(?=Q/image2.jpgE)/
Также попробуйте онлайн-тестер регулярных выражений.