正则表达式替换:计算一个或多个"一个或多个"发生量

时间:2017-02-12 12:54:34

标签: ruby regex

我有正则表达式:

/([^\r])(\n)+/

我希望将其替换为:

"#{$1}#{replacement_var}"

$2必须是非"\n"字符后的"\r"的确切数量。

例如:if replacement_var = "ben",然后:

"0\n\r\n\n123\n\n\n456\r\n"

应该成为:

"0ben\r\nben123benbenben456\r\n"

我可以放弃在正则表达式中放弃([^\r])然后再次替换(" \ rben"与" \ r \ n"),但我我想知道我是否可以避免两个正则表达式操作并在一个操作中完成。

1 个答案:

答案 0 :(得分:2)

尝试类似

的内容
replacement_var = "ben"
"0\n\r\n\n123\n\n\n456\r\n".gsub(/((?<!\r)\n+)/) { replacement_var * $1.size } 
#=> "0ben\r\nben123benbenben456\r\n"