Вы не хотите +
, потому что вы хотите в точности 4 пробела, и вам нужно обратное утверждение:
text = text.replaceAll("(?m)(?<=^ *) ", "\t");
Примечание: это следует использовать толькодля ввода около 10K или меньше из-за возврата назад, требуемого взглядом позади.Для большего ввода используйте шаблон и сопоставление и т. Д.
В отличие от других ответов, этот на самом деле работает (см. Тест ниже), поскольку он использует положительный взгляд (?<=^ *)
, чтобы утверждать, что между пробелами находятся только пробелы.начало ввода и замена цели, без которой вы будете сопоставлять только первый 4 пробела:
String text = " a\n b \n";
text = text.replaceAll("(?m)(?<=^ *) ", "\t");
System.out.println(text.replace("\t", "TAB"));
Выход:
TABTABa
TABTABb