2017-02-28 2 views
0

Betrachten Sie folgenden Code.Java String.replaceAll() ersetzen über Zeilenumbrüche

String s = "000000Xabcdefgh\nijkX00000000"; 
s = s.replaceAll("X.*X", ""); 
System.out.println(s); 

Ich erwarte, dass Xabcdefgh\nijkX mit einem leeren String ersetzt werden, aber da es ein Newline in der Mitte ist, wird nichts ersetzt. Warum wird der Regex-Abgleich bei Newline beendet? Wie kann ich Zeilenumbrüche beim Abgleichen von Regex ignorieren?

+0

s = s.replaceAll ("X ([^ X] *) X", ""); Es ersetzt alles zwischen zwei X's. – Avaneesh

Antwort

0

versuchen Sie dies:

String s = "000000Xabcdefgh\nijkX00000000"; 
s = s.replaceAll("X.*(|\t|\r\n|\r|\n).*X", ""); 
System.out.println(s); 

Diese Pflege aller anderen white-space/Newline Zeichen nehmen.

Verwandte Themen