使用GREP/RegEx查找并替换字符串
问题描述:
所以,我试图将数据库从Textpattern CMS迁移到更通用的东西。在引入图片的文章中有一些特定于textpattern的命令。我想把它们变成通用的HTML图像链接。目前,他们看起来像这样在SQL文件:使用GREP/RegEx查找并替换字符串
<txp:upm_image image_id="4" form="dose" />
我希望把这些变成更多的东西是这样的:
<img src="4.jpg" class="dose" />
我有一些运气的TextWrangler做一些正则表达式的东西,但我很难过。如何找到&取代所有这些图像路径的任何想法?
编辑: 以供将来参考,这是我结束了在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" />
答
不知道你正在使用,但尝试这个正则表达式的解决方案,工具:搜索此:
<txp:upm_image\s+image_id="(\d+)"\s+form="([^"]*)"\s*\/>
,代之以这样的:
<img src="$1.jpg" class="$2" />
请注意,这只是WO rks为与您的示例具有相同形式的txp标记。如果txp标签具有额外的属性,或者它们的顺序不同,它将会失败。
答
我不会使用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的达尔文)
+0
如果字符串由一个txp标签组成,此解决方案将起作用。如果有多个txt标签与它们之间的东西,它会失败。 – ridgerunner 2011-03-25 17:45:52
真棒,工作就像一个魅力。 – jpea 2011-03-25 17:03:50