regex - 如何按名称访问捕获组?
问题描述
说我有一个:MatchResult
m
>>> var m = Regex("(?<foo>hello) world").find("hello world")!!
如何按名称访问名为“foo”的组?根据文档MatchGroupCollection
实现get(String)
operator,但如果我尝试它,我会得到一个异常:
>>> m.groups["foo"]
error: type mismatch: inferred type is String but Int was expected
m.groups["foo"]
^
解决方案
它是MatchNamedGroupCollection
允许按名称获取的,MatchGroupCollection
唯一允许按整数索引获取的。
因此,您需要在按名称获取匹配项之前检查组类型。
就像是:(m.groups as MatchNamedGroupCollection)["foo"]
推荐阅读
- ios - FCM 推送通知如何获取数据并显示自定义横幅
- angular - firebase auth/unauthorized-domain 错误,虽然我授权了域
- scala - 如何在scala中将函数的输出结果作为PUT请求提供?
- python - 在机器人关键字中实现增量数值变量
- .net - Docket.DotNet 的 Docker 桌面问题,第二次调用 _dockerClient.Containers.StartContainerAsync() 将失败并出现 OperationCanceledException
- nfc - 读取数据 ST25DV
- javascript - 无法从 NY Times API 检索数据
- kubernetes - Kubernetes - 重启后指标不显示
- git - 将 git 远程部分同步到另一个
- node.js - 无法安装 expo-cli --global