2011-06-05 24 views
12

debería ser simple, pero me estoy volviendo loco con eso.Java regex: newline + espacio en blanco

Dado un texto como:

line number 1 
line number 2 
line number 2A 
line number 3 
line number 3A 
line number 3B 
line number 4 

necesito la expresión regular de Java que elimina las terminaciones de línea a continuación, la nueva línea comienza con el espacio, de modo que el texto de la muestra por encima de convertirse:

line number 1 
line number 2line number 2A 
line number 3line number 3Aline number 3B 
line number 4 
+1

Try '' "\ r \ n \ W +?". No lo he probado, así que no quiero registrarlo como respuesta. En caso de que no lo hayas verificado, puedes encontrar algunos detalles sobre Java regex aquí: http://download.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html. . Si se le garantiza que "línea" es el primer texto en una línea determinada, también puede intentar '" \ r? \ N [^ l] + "'. –

+0

@Mike M: no funcionará en el sistema operativo de Apple –

+0

Aunque debería funcionar en OS-X, ¿no? ¿Las personas todavía usan versiones antiguas de Apple? –

Respuesta

11

yourString.replaceAll("\n ", " "); esto no ayuda?

+3

1) La pregunta dice: _si se encuentra con la línea que comienza con , elimine tanto la línea en blanco como la nueva. 2) '\ n' no es portable –

+0

esto es suficiente por el momento. muchas gracias – MatteoSp

+3

@MatteoSp, recuerde que las picaduras son inmutables, por lo que de hecho necesita 'yourString = yourString.replaceAll (" \ n "," ");' o algo así, porque el método de llamada no cambiará el objeto String de forma permanente. Me alegro de ayudar :) – dantuch

2

"\n " Esto debería hacer el truco si estás en modo Unix LF. Para DOS como debe coincidir con CRLF "\r\n ". Comprobé que RegexBuddy se veía bien.

3

Tal vez para que sea multiplataforma:

String pattern = System.getProperty("line.separator") + " "; 
string.replaceAll(pattern, ""); 
+7

Bueno, el sistema 'line.separator' realmente no ayuda, ya que no se sabe si los archivos fueron creados en el sistema donde se está ejecutando la JVM –

8
String res = orig.replaceAll("[\\r\\n]+\\s", ""); 
Cuestiones relacionadas