gpt4 book ai didi

regex - Kotlin:如何获取匹配的第一行的捕获组?

转载 作者:行者123 更新时间:2023-12-01 17:16:48 25 4
gpt4 key购买 nike

  1. 从 lineSequence 开始
  2. 我想测试正则表达式是否匹配,如果匹配,则获取第一个匹配项
  3. 此外,我想从该正则表达式匹配中返回一个捕获组

如果我不在乎,我会在 lineSequence 上执行“第一个”操作,如果它存在,则重新运行正则表达式。

val possibleMatch = input.lineSequence().first { myRegex.matches(it) }

...但我想成为 kotlin 酷并且不必重新运行正则表达式。我应该使用 MatchGroup 的映射并过滤掉空值吗?感觉比想象的更冗长......

input.lineSequence()
.mapNotNull { myRegex.find(it) }
.map { it.groupValues[1] }
.first()

最佳答案

您可以将其简化为单个 .mapNotNull { ... }:

input.lineSequence()
.mapNotNull { regex.find(it)?.groupValues?.get(1) }
.first()

如果.find(it)返回null,该值仍将从序列中删除,否则它将在同一个调用中进行处理。

关于regex - Kotlin:如何获取匹配的第一行的捕获组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46410292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com