Regexp: как получить каждую группу MatchData? - PullRequest
4 голосов
/ 29 октября 2009

У меня есть следующее регулярное выражение:

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 Ответ

3 голосов
/ 29 октября 2009

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

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

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

 [ ["x", "in", "integer"], ["y", "in", "logic"], ["z", "in", "float"] ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...