如何使正则表达式第一次机会结束。 (Kotlin)

说我有一个字符串,包含一个程序与笔记如下:

var iString = "int i; //A variable \n" + "//This is a text with notes \n" + "//Can you remove them? \n" + "cout<<i; //printing i \n" 

我创建了一个可以识别注释的正则表达式:

 var notes1= ("/"+"(\\s)*"+"/"+"(\\w|[^\\w])*"+"\\n").toRegex() 

问题是编写var newString = iString.replace(notes1,"")

我接受newString为: "int i; cout<<i \n"

相反,结果是: "int i;"

正则表达式“吞噬”整个字符串直到最后一个"\n"而我想要的就是结束每当得到机会。

我如何在Kotlin中定义它?

X*是一个贪婪的量词(参见量词(The Java™Tutorials> Essential Classes> Regular Expressions )。

你可以使用X*? 相反,这是一个不情愿的量词:

 var iString = "int i; //A variable \n" + "//This is a text with notes \n" + "//Can you remove them? \n" + "cout<<i; //printing i \n" var notes1= ("/"+"(\\s)*"+"/"+"(\\w|[^\\w])*?"+"\\n").toRegex() println(iString.replace(notes1, "")) 

输出:

 int i; cout<<i;