Как получить доступ к группе захвата по имени?
Скажем, у меня есть 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"]