集团捕捉

大家好,我正在努力弄清楚如何使用kotlin正则expression式的组捕获的结果,为我的生活在网上找不到任何东西。 我基本上只是想简单地去掉“k”

var line = "4353453555k fgafg 4535k" line.replace("(\\d*)[k]".toRegex(), "replace with group capture") 

我想要的结果是:

  4353453555 fgafg 4535 

要删除数字后面的k ,可以使用

 line = line.replace("""(\d+)k""".toRegex(), "$1") 

这里, (\d+)k匹配并捕获组1中的一个或多个数字,然后匹配k ,替换模式中的$1将组1的值插入到结果字符串中。

或者,您可以使用基于lookbehind的解决方案:

 line = line.replace("""(?<=\d)k""".toRegex(), "") 

请参阅在线Kotlin演示 。

(?<=\d)k模式只有在紧跟一个数字之前,才与一个k字符相匹配。 (?<=\d)模式是一个积极的后顾之忧,它需要在当前位置的左侧立即出现一个数字(没有将匹配的文本放入匹配缓冲区,所以替换为空字符串)。