集团捕捉
大家好,我正在努力弄清楚如何使用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)
模式是一个积极的后顾之忧,它需要在当前位置的左侧立即出现一个数字(没有将匹配的文本放入匹配缓冲区,所以替换为空字符串)。