0

我有一个长字符串,其中包含几个用 BBcode 编码的 url。例如,我的字符串的一部分:

"...[url=http://example1.com][img]http://picture.com/1.jpg[/img][/url]
[url=http://example2.com][img]http://picture.com/2.jpg[/img][/url]
[url=http://example3.com][img]http://picture.com/3.jpg[/img][/url]..."

包含之前和之后的行"...",但不再包含包含"[url="and的行"[/url]"。我想替换第一次出现的"[url="with"[spoiler][url=]"和最后一次出现的"[/url]"with"[/url][/spoiler]"来获得这个:

"...[spoiler][url=http://example1.com][img]http://picture.com/1.jpg[/img][/url]
[url=http://example2.com][img]http://picture.com/2.jpg[/img][/url]
[url=http://example3.com][img]http://picture.com/3.jpg[/img][/url][/spoiler]..."

如何使用 Ruby 实现这一目标?

4

1 回答 1

4

你可以试试这个:

str = str.sub(/\[url=.+\[\/url\]/m, '[spoiler]\0[/spoiler]') 

这个想法是替换第一个[url..]和最后一个[/url](包括标签)之间的所有代码块,并在替换字符串[spoiler]之前和之后添加自身。[/spoiler]

由于量词+是贪婪的,子串[/url]必须是最后一个。

于 2013-06-29T22:57:57.293 回答