Вы можете использовать
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
наобъект регулярного выражения, сопоставьте результаты со значениями и приведите к списку:
.findAll(testLink3).map{it.value}.toList()
Для подсчета совпадений вы можете использовать
matcher.findAll(testLink3).count()
демонстрационное выражение Regex
(?i)
- модификатор, не чувствительный к регистру (?<!\\p{L})
- отрицательный вид сзади, который не может найти совпадение, если непосредственно слева от текущего местоположения есть буква $word
- ваше word
значение переменной (?!\\p{L})
- отрицательный прогноз, который не дает совпадения, если непосредственно справа от текущего местоположения есть буква.