ruby - 如何引用ruby正则表达式

标签 ruby regex

我要转换字符串:

"{john:123456}" 

到:

"<script src='https://gist.github.com/john/123456.js'>"

我写了一个可行的方法,但它非常愚蠢。是这样的:

def convert
    args = []

    self.scan(/{([a-zA-Z0-9\-_]+):(\d+)}/) {|x| args << x}  

    args.each do |pair|
       name = pair[0]
       id = pair[1]
       self.gsub!("{" + name + ":" + id + "}", "<script src='https://gist.github.com/#{name}/#{id}.js'></script>")
    end 

    self
end

有没有办法像下面的cool_method那样做到这一点?

"{john:123}".cool_method(/{([a-zA-Z0-9\-_]+):(\d+)}/, "<script src='https://gist.github.com/$1/$2.js'></script>")

最佳答案

那个很酷的方法是 gsub。你离得太近了!只需将 $1 和 $2 更改为\\1 和\\2

http://ruby-doc.org/core-2.0/String.html#method-i-gsub

"{john:123}".gsub(/{([a-zA-Z0-9\-_]+):(\d+)}/, 
  "<script src='https://gist.github.com/\\1/\\2.js'></script>")

关于ruby - 如何引用ruby正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16399829/

相关文章:

ruby-on-rails - rack-mini-profiler 正在显示分析静态文件

ruby - 修改线程之间公共(public)哈希的不同键是线程安全的吗?

java - 正则表达式替换 HTML 字符串中的样式属性

java - 如何仅在某些行上获得多个 Java 正则表达式匹配项

Mysql 查询匹配精确的单词并从数据库中删除该精确的单词

python - 意外的逗号匹配 in\d 与 Python 正则表达式

java - 如何匹配以或等于搜索字符串开头的 TreeMap 值

ruby - Sass 无法工作并且无法在 macOS Catalina 上安装 ruby​​-sass

ruby - 通过操作而不是分配来绕过写入器访问器

ruby - 如何使用 rspec 在 sinatra 中测试重定向?