如何使用正则表达式在Kotlin中查找整个单词

时间:2018-10-03 13:25:27

标签: regex kotlin

我想找到整个字符串。但是我不知道如何在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语言找到该值。

1 个答案:

答案 0 :(得分:2)

您可以使用

[Authorize]

请参见online Kotlin demo

要获取匹配项列表,您需要在正则表达式对象上运行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-如果在当前位置的右边立即有一个字母,则负匹配将使匹配失败。