使用gsub(),如何在替换字符串中引用被替换字符串?

Posted

技术标签:

【中文标题】使用gsub(),如何在替换字符串中引用被替换字符串?【英文标题】:Using gsub(), how to refer to the replaced string in the replacing string? 【发布时间】:2013-08-17 06:29:21 【问题描述】:

例如,我有一个文本块,其中包含字符串“image=filename.jpg”的多个实例,其中 filename.jpg 可以是任何文件名,我想将 中的所有内容替换为使用文件名找到图像的图像标签,例如Model.find_by_attachment_file_name("filename.jpg").

可以这样做吗?

编辑:

示例输入:

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 

image=some_file.png

Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

期望的输出:

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 

<img src="/system/attachments/model/some_file.png">

Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

使用Model.find_by_model_attachment_file_name("some_file.png").model_attachment.url可以找到所需输出的图像标签的src属性

也就是说,类似于:

string.gsub(/image=.*/, "<image src=#ContentAttachment.find_by_content_image_file_name([???]).content_image.url(:main)")

其中 [???] 被替换为对替换为 gsub 的内容的引用。

或者,如何在 gsub 的第二个参数中引用第一个参数?

【问题讨论】:

请提供示例字符串和预期输出。 @HariKrishnan 示例添加 【参考方案1】:

不是将第二个参数设置为 gsub,而是将一个块附加到 gsub 来完成这项工作。

string.gsub(/\image=(.*)\/)
  # $1 will be "some_file.png"
  "<image src=#ContentAttachment.find_by_content_image_file_name([$1]).content_image.url(:main)"

【讨论】:

以上是关于使用gsub(),如何在替换字符串中引用被替换字符串?的主要内容,如果未能解决你的问题,请参考以下文章

在 R 中的一个 gsub() 或 chartr() 语句中替换多个字符串?

Lua 字符串替换

lua中怎么替换掉字符串中的$^特殊字符?

替换列名 gsub 中的字符

R - gsub 替换反斜杠

R语言sub函数和gsub函数替换(replace)匹配的字符串实战