正则表达式:如何获得每一组MatchData?

时间:2009-10-29 13:18:34

标签: ruby regex

我有以下Regexp:

regexp=/(\w+) \s* : \s* (\w+) \s+ (.*) \s* ;?/ix

我正试图获取捕获信息:

names, direction, type = iotext.match(regexp).captures

这适用于单个“x:in integer;” ,

但是我怎么能在我的文件中获得所有其他匹配数据组:

"x : in integer;
y : in logic;
z : in float;"

1 个答案:

答案 0 :(得分:3)

你的正则表达式regexp没问题,它只匹配一次出现。如果你想匹配每次出现尝试

"x : in integer; y : in logic; z : in float;".scan(regexp)

导致一个包含3个元素的数组,其中包含每3个匹配的数组,即

 [ ["x", "in", "integer"], ["y", "in", "logic"], ["z", "in", "float"] ]