组捕获

Gar*_*ary 4 regex kotlin

大家好,我想弄清楚如何在 kotlin 中使用从正则表达式中捕获的组的结果,而我一生都无法在网上找到任何东西。我基本上只是想简单地去掉“k”

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

我想要的结果:

    4353453555 fgafg 4535
Run Code Online (Sandbox Code Playgroud)

Wik*_*żew 6

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

line = line.replace("""(\d+)k""".toRegex(), "$1")
Run Code Online (Sandbox Code Playgroud)

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

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

line = line.replace("""(?<=\d)k""".toRegex(), "")
Run Code Online (Sandbox Code Playgroud)

请参阅在线 Kotlin 演示

(?<=\d)k模式k仅在字符前面紧跟数字时才匹配字符。该(?<=\d)模式是一个积极的后视,需要在当前位置的左侧立即出现其模式,一个数字(不将匹配的文本放入匹配缓冲区,因此替换为空字符串)。