У меня есть строка:Regex с именованными группами захвата получать все матчи в Рубине
s="123--abc,123--abc,123--abc"
Я попытался с помощью Ruby 1.9 в новую функцию «именованные группы», чтобы принести всю информацию о группе под названием:
/(?<number>\d*)--(?<chars>\s*)/
Есть ли API, такой как Python's findall
, который возвращает коллекцию matchdata
? В этом случае мне нужно вернуть два матча, потому что 123
и abc
повторяют дважды. Каждая информация о совпадении содержит подробную информацию о каждой именованной информации захвата, поэтому я могу использовать m['number']
, чтобы получить значение соответствия.
/(\ d *) - ([az] *)/если я использую это регулярное выражение, как я могу получить полную строку соответствия, в этом случае это ['123 - abc', '123 - abc '], то я могу построить matchdata для каждого элемента самостоятельно – mlzboy
@mlzboy, есть два решения. Самый простой из них - добавить третью группу в регулярное выражение: '/ ((\ d *) - ([az] *))/do | all, number, chars |' – Nakilon
спасибо, похоже, рубин не поддерживал названная функция захвата хорошо – mlzboy