Ruby正则表达式使用ruby命令但不是shebang

时间:2011-11-20 17:24:43

标签: ruby regex shebang

我在ruby文件中有以下2个正则表达式。我使用ruby命令时运行正常,但如果我尝试通过./apachereport.rb运行,则会生成错误。

正则表达式:

urls = parse(@file, /(?<=GET )\S+/)
codes = parse(@file, /(?<=HTTP\/[0-9]\.[0-9]" )\S+/)

错误:

./apachereport.rb:34: undefined (?...) sequence: /(?<=GET )\S+/
./apachereport.rb:47: undefined (?...) sequence: /(?<=HTTP\/[0-9]\.[0-9]" )\S+/

我使用的shebang如下所示,这似乎可以与其他ruby文件一起使用:

#!/usr/bin/ruby

1 个答案:

答案 0 :(得分:5)

最可能的解释是你安装了多个版本的ruby。安装在/usr/bin中的版本(您在shebang系列中使用的版本)是1.8.X,它在regexen中不支持?<=(后视)。键入ruby apachereport时执行的那个可能是ruby 1.9,它支持?<=

要验证这是which ruby中的案例类型,请注意它会打印/usr/bin/ruby以外的其他内容和/或将/usr/bin/ruby --version的结果与ruby --version进行比较。< / p>