我想找到整个字符串。但是我不知道如何在kotlin中找到所有单词。我的发现词是[非alpha] cba [非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语言找到该值。
答案 0 :(得分:2)
您可以使用
[Authorize]
要获取匹配项列表,您需要在正则表达式对象上运行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
方法,将结果映射到值并强制转换为列表:
findAll
要计算匹配数,您可以使用
.findAll(testLink3).map{it.value}.toList()
正则表达式演示
matcher.findAll(testLink3).count()
-不区分大小写的修饰符(?i)
-如果在当前位置的左侧紧跟着一个字母,那么该匹配项的后向否定符将失败,(?<!\\p{L})
-您的$word
变量值word
-如果在当前位置的右边立即有一个字母,则负匹配将使匹配失败。