Hola, tal y como lo has planteado con nextLine únicamente te permite entrar una línea de texto, creo que sería mejor que lo plantees como en este código:
import java.util.*;
public class Input
{
public static void main(String[ ] args)
{
Scanner in = new Scanner(System.in);
List<String> list = new ArrayList<String>( );
String line = null;
System.out.println("Enter some strings !");
while ((line = in.nextLine( )).length( ) > 0)
{
list.add(line);
}
}//main ends
}
De esta manera puedes escribir varias líneas y para terminar de escribir basta con pulsar dos veces enter.
También podrías cambiarlo para que en vez de así termine cuando sea una línea que contiene un $.
A partir de aquí ya tienes un array de Strings y por tanto cada elemento del array es una línea introducida, ya tienes contadas el número de líneas... por lo que creo que lo puedes hacer sin expresiones regulares, simplemente concatenando y con replace.
Salu2!