0
我試圖解析一些代碼,使紅寶石腳本,在某些時候我想用匹配字符串分隔成子:紅寶石正則表達式匹配括號中的子表達式
frase = "EXTREM(TIME2,FRE,NFRE,SDV,DEL,RMG)"
frase.match(/(\w*)\((.*)\)/)
=> #<MatchData "EXTREM(TIME2,FRE,NFRE,SDV,DEL,RMG)" 1:"EXTREM" 2:"TIME2,FRE,NFRE,SDV,DEL,RMG">
它按預期工作的IRB ,但是當我把這個腳本文件(一個函數調用PROCESA內):
tmpo = extra.match(/(\w*)\s*\((.*)\)/)
puts "#{nombre} calls #{tmpo[1]} with #{tmpo[2]}"
我得到這個錯誤:
`block in procesa': undefined method `[]' for nil:NilClass (NoMethodError)
from f2f90.rb:141:in `each_index'
from f2f90.rb:141:in `procesa'
from f2f90.rb:166:in `block in <main>'
from f2f90.rb:166:in `each'
from f2f90.rb:166:in `<main>'
我搜索了這個網站和谷歌沒有運氣,我錯過了什麼嗎?,我最終把extra.match(/(\w*)\s*(.*)/)
和tmpo[2].sub("(","").sub(")","")
,而不是我想它是做這件事的最好方式,我想知道爲什麼第一個表達式是錯的。提前致謝。
非常感謝:)這是一些意想不到的輸入,但是'nombre'與它無關,它與匹配無關。 – 2012-07-22 22:03:00
糟糕,我的意思是「額外」。樂意效勞! :) – 2012-07-22 22:18:19