gpt4 book ai didi

regex - 如何使用正则表达式在 kotlin 中找到整个单词

转载 作者:行者123 更新时间:2023-12-01 06:58:25 24 4
gpt4 key购买 nike

我想在字符串中找到整个单词。但我不知道如何在 kotlin 中找到所有单词。我的发现词是 [non alpha]cba [non alpha]。我的示例代码是波纹管。

val testLink3 = """cba@cba cba"""
val word = "cba"
val matcher = "\\b[^a-zA-Z]*(?i)$word[^a-zA-Z]*\\b".toRegex()
val ret = matcher.find(testLink3)?.groupValues

但是我的源代码的输出是“cba”
我的期望值是字符串数组,例如“{cba, cba, cba}”。
如何在 kotlin 语言中找到这个值。

最佳答案

您可以使用

val testLink3 = """cBa@Cba cbA123"""
val word = "cba"
val matcher = "(?i)(?<!\\p{L})$word(?!\\p{L})".toRegex()
println(matcher.findAll(testLink3).map{it.value}.toList() )
println(matcher.findAll(testLink3).count() )
// => [cBa, Cba, cbA]
// => 3

online Kotlin demo .

要获取匹配列表,您需要运行 findAll regex 对象上的方法,将结果映射到值并转换为列表:
.findAll(testLink3).map{it.value}.toList()

要计算匹配项,您可以使用
matcher.findAll(testLink3).count()

正则表达式演示
  • (?i) - 不区分大小写的修饰符
  • (?<!\\p{L}) - 如果在当前位置的左侧有一个字母
  • ,则匹配失败的负向后视。
  • $word - 您的 word变量值
  • (?!\\p{L}) - 如果在当前位置的右侧有一个字母,则匹配失败的负前瞻。
  • 关于regex - 如何使用正则表达式在 kotlin 中找到整个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52628091/

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