Ruby 这句 ruby 脚本何解

xautjzd · 2014年08月18日 · 最后由 Iacob 回复于 2014年08月19日 · 1992 次阅读

刚才无意浏览到一个获取 web 页面的 urls 脚本:

ruby -ne 'if $_ =~ /href=\"([^\"]+)\"/;puts $1;end' < YourHTMLfile.html

请问,其中$1指的是哪个参数呢?其中那个正则看了半天也没看明白,三个"照理应该是就近匹配原则

如果不理解$_全局变量,请参考:

  1. https://github.com/ruby/ruby/blob/trunk/lib/English.rb
  2. http://stackoverflow.com/questions/14177016/how-do-you-pipe-shell-output-to-ruby-e

[^\"] 匹配的是除双引号之外的字符 $1 是上一次正则匹配时的第一组字符 (http://ruby-doc.org/core-2.1.1/Regexp.html#class-Regexp-label-Special+global+variables)

前 perl 程序猿写的 ruby 脚本

#2 楼 @Iacob Perl 程序猿应该会这么写😄

ruby -ne 'puts $1 if /href=\"([^\"]+)\"/'
需要 登录 后方可回复, 如果你还没有账号请 注册新账号