我正在使用带有正则表达式的 gsub 方法:

@text.gsub(/(-\n)(\S+)\s/) { "#{$2}\n" }

输入数据示例:
"The wolverine is now es-
sentially absent from
the southern end
of its European range."

应该返回:
"The wolverine is now essentially
absent from
the southern end
of its European range."

该方法工作正常,但 rubocop 报告和攻击:



任何想法如何使用 MatchData 对象而不是 $2 重写它?

最佳答案

您可以在没有块的情况下使用反斜杠:

@text.gsub /(-\n)(\S+)\s/, "\\2\n"

此外,只使用一个组会更干净一些,因为不需要上面的第一个:
@text.gsub /-\n(\S+)\s/, "\\1\n"

关于ruby - 如何用 MatchData 对象替换 Perl 风格的正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43510068/

10-13 01:25