我想找到整个单词的字符串。但是我不知道如何在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语言找到此值。
您可以使用
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
请参阅在线Kotlin演示。
要获取匹配列表,您需要findAll
在regex对象上运行方法,将结果映射到值并转换为列表:
.findAll(testLink3).map{it.value}.toList()
要计算比赛次数,您可以使用
matcher.findAll(testLink3).count()
正则表达式演示
(?i)
-不区分大小写的修饰符(?<!\\p{L})
-如果当前位置左侧紧跟着一个字母,则负向后搜索将使匹配失败$word
-您的word
可变值(?!\\p{L})
-如果当前位置右侧紧邻有字母,则匹配失败的否定前行。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句