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