繁体   English   中英

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

[英]Using GREP / RegEx to find and replace string

因此,我正在尝试将数据库从Textpattern CMS迁移到更通用的数据库。 文章中有一些特定于textpattern的命令可以提取图像。 我想将它们变成通用的HTML图像链接。 目前,它们在sql文件中如下所示:

<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" />

我不会使用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达尔文)

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

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

并替换为:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM