使用GREP / RegEx查找和替换字符串

时间:2011-03-25 16:42:08

标签: sql regex grep textwrangler textpattern

所以,我正在尝试将数据库从Textpattern CMS迁移到更通用的东西。拉入图像的文章中有一些特定于文本模式的命令。我想把它们变成通用的HTML图像链接。目前,它们在sql文件中看起来像这样:

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

我想把它们变成更像这样的东西:

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

我有一些运气与TextWrangler做一些正则表达式的东西,但我很难过。关于如何找到&amp;的任何想法替换所有这些图像路径?

编辑: 为了将来的参考,这是我最终在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 个答案:

答案 0 :(得分:1)

我不会用grep;它是你想要的

$ 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)

答案 1 :(得分:0)

不确定您使用的是哪种工具,但请尝试使用此正则表达式解决方案:搜索此内容:

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

并替换为:

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

请注意,这仅适用于与您的示例具有相同形式的txp标记。如果存在具有额外属性的txp标记,或者它们的顺序不同,则会失败。