2009-10-29 3 views
4

У меня есть следующие Regexp:Regexp: как получить каждую группу MatchData?

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

И я пытаюсь получить снимки:

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

Это прекрасно работает для одного «х: в целом;» ,

, но как я мог также получить все группы других данных о матче в моем файле:

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

ответ

3

Ваше регулярное выражение regexp это нормально, это просто соответствует только один вхождение. Если вы хотите, чтобы соответствовать каждому попробовать

вхождение
"x : in integer; y : in logic; z : in float;".scan(regexp) 

, который приводит в массиве с 3 элементов, содержащим массив каждых 3 матчей, т.е.

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

Так просто. Большое спасибо. – JCLL

Смежные вопросы