2009-08-17 76 views
0

嗨我试图从类定义中提取参数。将AS3参数与Ruby正则表达式匹配

class locale.company.app.LoginData(username:String, password:String) 

我已经提取了包名和类名,但是这些参数给我带来了一些麻烦。

我用Rubular构建以下的正则表达式:

http://www.rubular.com/regexes/9597

根据Rubular这应该工作,但它没有,因为它只会匹配的第一个参数。 所以我想这正则表达式来代替:

classDescription = "class locale.company.app.LoginData(username:String, password:String)" 
fieldMatches = classDescription.match(/(((\w+\s*):(\s*\w+))(\s*,\s*)?)+/) 

我打印出来使用下面的代码匹配:

fieldMatches.to_a.each {|m| puts m} 

我得到这样的结果:

username:String, password:String 
password:String 
password:String 
password 
String 
, 

这仅匹配第二个参数出于某种原因。 有谁知道提取参数的方法?

回答

0

我想你想使用“扫描”,而不是“匹配”:

classDescription = "class locale.company.app.LoginData(username:String, password:String)" 
fieldMatches = classDescription.scan(/(\w+\s*):(\s*\w+)/) 
fieldMatches.each {|m| puts m} 

这给:

username 
String 
password 
String 
+0

优秀感谢马丁,我只知道必须有一个贪婪的方法。再次感谢 – 2009-08-17 11:57:11