我想找到字符串中的整个单词。但我不知道如何在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
Run Code Online (Sandbox Code Playgroud)
但我的源代码的输出是“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
Run Code Online (Sandbox Code Playgroud)
请参阅在线 Kotlin 演示。
要获取匹配列表,您需要findAll在正则表达式对象上运行该方法,将结果映射到值并转换为列表:
.findAll(testLink3).map{it.value}.toList()
Run Code Online (Sandbox Code Playgroud)
要计算匹配数,您可以使用
matcher.findAll(testLink3).count()
Run Code Online (Sandbox Code Playgroud)
正则表达式演示
(?i)- 不区分大小写的修饰符(?<!\\p{L})- 如果紧邻当前位置的左侧有一个字母,则表示匹配失败的负向后查找$word- 你的word变量值(?!\\p{L})- 如果紧邻当前位置的右侧有一个字母,则表示匹配失败的负向前查找。| 归档时间: |
|
| 查看次数: |
11738 次 |
| 最近记录: |