Символьные названия группы (как в Python) в регулярном выражении Ruby

Столкнулся с этой удобной утилитой регулярного выражения в Python (я - новичок в Python). например, При помощи regexp

(?P[a-zA-Z_]\w*)

Я могу обратиться к согласованным данным как

m.group('id')

(Полная документация: ищите "символьное название группы" здесь),

В Ruby мы можем получить доступ к подобранному ссылочному использованию $1, $2 или использование объекта MatchData (m[1], m[2] и т.д.). Действительно ли там что-то подобно Символьным Названиям группы Python в Ruby?

7
задан tzot 19 January 2010 в 02:24
поделиться

2 ответа

Старые релизы Ruby не имели названных групп (Tx Alan для указания этого комментария!), Но, если вы используете Ruby 1.9 ...:

(? <Имя> Субфп) выражает названную группу в выражении рубирования тоже; \ K <Имя> - это то, как вы поддерживаете названную группу в замене, если это то, что вы ищете!

11
ответ дан 6 December 2019 в 08:43
поделиться

Ruby 1.9 Введенные именованные съемки:

m = /(?<prefix>[A-Z]+)(?<hyphen>-?)(?<digits>\d+)/.match("THX1138.")
m.names # => ["prefix", "hyphen", "digits"]
m.captures # => ["THX", "", "1138"]
m[:prefix] # => "THX"

Вы можете использовать \ k <префикс> , и т. Д., Для обратных ссылок.

10
ответ дан 6 December 2019 в 08:43
поделиться