Ruby替换单引号内的文本或html标记的反引号

时间:2011-03-31 08:53:54

标签: ruby regex replace

您好我正在尝试在Ruby中构建一个简单的操作,它接受一个像

这样的字符串

result = "This is my javascript variable 'var first = 1 + 1;' and here is another 'var second = 2 + 2;' and that's it!"

所以基本上我想在单引号'或反引号`中使用该文本并将其替换为:

<code>original text</code>请注意我正在用开始和结束code标记

替换它

就像降价一样

所以我会得到像

这样的结果

result = "This is my javascript variable <code>var first = 1 + 1;<code> and here is another <code>var second = 2 + 2;</code> and that's it"

如果可以在不需要任何额外宝石的情况下本地运行,那就太棒了:)

非常感谢

3 个答案:

答案 0 :(得分:2)

我猜你需要迭代字符串并解析它。虽然你可以做非贪婪的正则表达式匹配,例如result.gsub!(/'([^']*)'/, '<code>\1</code>')您可能会发现结果在角落情况下的行为可能不正确。

答案 1 :(得分:1)

没有任何其他高级要求

>> result.gsub(/\s+'/,"<code>").gsub(/'\s+/,"</code>")
=> "This is my javascript variable<code>var first = 1 + 1;</code>and here is another<code>var second = 2 + 2;</code>and that's it!"

答案 2 :(得分:1)

您需要提供一个字符作为代码的分隔符,否则您不会使用它。

为什么呢?因为所有的角落案件。例如。以下字符串

result = "This's my javascript variable 'var first = 1 + 1;' and here is another 'var second = 2 + 2;' and that's it!"

否则会产生:

"This<code>s my javascript variable </code>var first = 1 + 1;<code> and here is another </code>var second = 2 + 2;<code> and that</code>s it!"

垃圾总量..

但是,如果您使用唯一字符作为未使用的分隔符,则可以创建一个非贪婪的RegExp来执行搜索/替换

e.g。使用#字符分隔代码:

  "This's my javascript variable #var first = 1 + 1;# and here is another #var second = 2 + 2;# and that's it!"