如何使正则表达式第一次机会结束。 (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;