Cor*_*ing 3 ruby regex shebang
我在ruby文件中有以下2个正则表达式.当我使用ruby命令时它们运行正常,但如果我尝试通过./apachereport.rb它运行它会产生错误.
正则表达式:
urls = parse(@file, /(?<=GET )\S+/)
codes = parse(@file, /(?<=HTTP\/[0-9]\.[0-9]" )\S+/)
Run Code Online (Sandbox Code Playgroud)
错误:
./apachereport.rb:34: undefined (?...) sequence: /(?<=GET )\S+/
./apachereport.rb:47: undefined (?...) sequence: /(?<=HTTP\/[0-9]\.[0-9]" )\S+/
Run Code Online (Sandbox Code Playgroud)
我正在使用的shebang如下,这似乎与其他ruby文件一起使用:
#!/usr/bin/ruby
Run Code Online (Sandbox Code Playgroud)
最可能的解释是你安装了多个版本的ruby.安装的版本/usr/bin(你在shebang系列中使用的版本)是1.8.X,它?<=在regexen中不支持(look-behind).键入时执行的那个ruby apachereport可能是ruby 1.9,它支持?<=.
为了验证这是在案件类型which ruby,并注意它打印其他的东西比/usr/bin/ruby和/或比较的结果/usr/bin/ruby --version来ruby --version.