Как получить доступ к группе захвата по имени?

Скажем, у меня есть MatchResult m:

>>> var m = Regex("(?<foo>hello) world").find("hello world")!!

Как мне получить доступ к группе с именем "foo" по имени? Согласно документамMatchGroupCollection реализует get(String)оператор, но если я попробую, то получу исключение:

>>> m.groups["foo"]
error: type mismatch: inferred type is String but Int was expected
m.groups["foo"]
         ^

1 ответ

Это MatchNamedGroupCollection что позволяет получить по имени, MatchGroupCollection позволяет получать только по целочисленному индексу.

Поэтому вам нужно проверить тип группы, прежде чем получить совпадение по имени.

Что-то типа: (m.groups as MatchNamedGroupCollection)["foo"]

Другие вопросы по тегам