Использование GREP / RegEx для поиска и замены строки - PullRequest
0 голосов
/ 25 марта 2011

Итак, я пытаюсь перенести базу данных из Textpattern CMS в нечто более общее. Внутри статей есть некоторые специфичные для textpattern команды, которые загружают изображения. Я хочу превратить их в общие ссылки HTML-изображения. На данный момент они выглядят так в файле sql:

<txp:upm_image image_id="4" form="dose" />

Я хочу превратить их во что-то вроде этого:

<img src="4.jpg" class="dose" />

Мне повезло, что TextWrangler выполнил некоторые регулярные выражения, но я в замешательстве. Любые идеи о том, как найти и заменить все эти пути изображения?

EDIT: Для дальнейшего использования вот что я сделал в PHP для вывода:

$body = $post['Body_html'];
$pattern = '/txp:upm_image image_id="([0-9]+)" form="([^"]*)"/i';
$replacement = 'img src="/images/$1.jpg" class="$2"';
$body = preg_replace($pattern, $replacement, $body);
// outputed <img src="/images/59.jpg" class="dose" />

Ответы [ 2 ]

1 голос
/ 25 марта 2011

я бы не использовал grep;это sed вы хотите

$ echo '<txp:upm_image image_id="4" form="dose" />' | sed -e 's/^.*image_id="\([[:digit:]]*\)".*form="\([[:alpha:]]*\)".*/<img src="\1.jpg" class="\2" \/>/' 
<img src="4.jpg" class="dose" /> 
$

если в вашем классе есть буквенно-цифровые символы, используйте [[: alnum:]]

(работает на macos darwin)

0 голосов
/ 25 марта 2011

Не уверен, какой инструмент вы используете, но попробуйте это решение регулярных выражений: Поиск по этому:

<txp:upm_image\s+image_id="(\d+)"\s+form="([^"]*)"\s*\/>

И заменить на это:

<img src="$1.jpg" class="$2" />

Обратите внимание, что это работает только для тегов txp, имеющих ту же форму, что и ваш пример. Он потерпит неудачу, если есть теги txp, имеющие дополнительные атрибуты, или если они находятся в другом порядке.

...