por explorer » 2016-06-10 16:48 @741
Cuando pones un modificador no avariciosa, como el caso de .*?, el motor de expresiones regulares debe saber ante qué carácter debe pararse. Si no pones ninguno, pues se lo come todo.
Como dices que captura todo, sospecho que es debido a que has leído todo el archivo de golpe, y no lo estás procesando línea por línea.
Entonces, hay que saber hasta dónde pararse.
Sería algo así:
/hola2 : (.*?)\b/
El ancla '\b' indica "frontera de palabra", así que, el operador no avaricioso terminará justo cuando termine de capturar lo que sigue a hola2.
Otra opción sería:
/hola2 : (.*?)$/m
Con '/m' indicamos que vamos a procesar un texto multilínea, así que el significado de las anclas '^' y '$' cambian, y pasan a referirse a, respectivamente, a principio y fin de cada línea dentro del texto.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES