Cómo hacer que la expresión regular termine en la primera oportunidad. (Kotlin)

Supongamos que tengo una cadena que contiene un progtwig con notas de la siguiente manera:

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

Creé una expresión regular que reconocería notas:

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

El problema es cuando se escribe var newString = iString.replace(notes1,"")

Acepto que newString sea: "int i; cout<<i \n"

En cambio, el resultado es: "int i;"

La expresión regular 'devora' toda la cadena hasta la última "\n" mientras yo quería terminar cada vez que tiene la oportunidad.

¿Cómo lo defino en Kotlin?

X* es un cuantificador codicioso (ver Cuantificadores (Los Tutoriales de Java ™> Clases Esenciales> Expresiones Regulares ).

Puedes usar X*? en cambio, que es un cuantificador reacio:

 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, "")) 

Salida:

 int i; cout<<i; 
  • groupValues ​​solo devuelve la última aparición de patrón repetitivo
  • Fusionando varias tags <script> en una en Kotlin
  • ¿Qué corresponde exactamente a una Regex creada con Regex.fromLiteral ()?
  • ¿Por qué no mira hacia adelante y mira detrás del trabajo de Regex en Kotlin?