我在期待这个
val string = "hello , world"
val regex = Regex("""(\s+)[,]""")
println(string.replace(regex, ""))
导致这个:
hello, world
相反,它会打印出来:
hello world
我看到replace
功能关心整场比赛。有没有办法只替换第一组而不是第0组?
答案 0 :(得分:1)
在替换中添加逗号:
val string = "hello , world"
val regex = Regex("""(\s+)[,]""")
println(string.replace(regex, ","))
或者,如果kotlin支持前瞻:
val string = "hello , world"
val regex = Regex("""\s+(?=,)""")
println(string.replace(regex, ""))
答案 1 :(得分:0)
您可以使用MatchGroupCollection的groups属性然后使用范围作为String.removeRange方法的参数来检索正则表达式的匹配范围:
val string = "hello , world"
val regex = Regex("""(\s+)[,]""")
val result = string.removeRange(regex.find(string)!!.groups[1]!!.range)