集团捕获

时间:2018-02-08 23:30:50

标签: regex kotlin

大家好我想弄清楚如何在kotlin中使用正则表达式的群组捕获结果,而且我的生活在网上找不到任何东西。我基本上只是想简短地删除“k”

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

我想要的结果:

    4353453555 fgafg 4535

1 个答案:

答案 0 :(得分:3)

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

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

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

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

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

请参阅online Kotlin demo

(?<=\d)k模式仅匹配k字符,如果它前面有一个数字。 (?<=\d)模式是一个积极的lookbehind,需要在当前位置的左侧立即存在其patten(数字)(不将匹配缓冲区中的文本匹配,因此替换为空字符串)。