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

发布于 2024-10-26 13:21:45 字数 679 浏览 8 评论 0原文

因此,我正在尝试将数据库从 Textpattern CMS 迁移到更通用的数据库。文章中有一些特定于文本模式的命令来提取图像。我想将它们转换为通用 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" />

So, I'm trying to migrate a database from Textpattern CMS to something more generic. There are some textpattern-specific commands inside of articles that pull in images. I want to turn these into generic HTML image links. At the moment, they look like this in the sql file:

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

I want to turn these into something more like this:

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

I've had some luck with TextWrangler doing some regex stuff, but I'm stumped. Any ideas on how to find & replace all of these image paths?

EDIT:
For future reference, here's what I ended up doing in PHP to output it:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

山色无中 2024-11-02 13:21:45

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

I wouldn't use grep; it's sed you want

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

if your class has alphanumeric characters, use [[:alnum:]]

(works on macos darwin)

九命猫 2024-11-02 13:21:45

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

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

并替换为:

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

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

Not sure which tool you are using but try this regex solution: Search for this:

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

And replace with this:

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

Note that this only works for txp tags having the same form as your example. It will fail if there are txp tags having extra attributes, or if they are in a different order.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文