我在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
答案 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>