Regex help - очистка пробелов - Java - PullRequest
2 голосов
/ 28 мая 2010

Я пытаюсь просмотреть текст HTML-файлов разумным способом. После удаления всей разметки и сохранения только видимого текста я получаю строку, которая выглядит примерно так:

\n\n\n\n \n\n\n \n\n \n Title here \n\n\n \n\n \n\n Menu Item 1 \n\n \n\n Menu Item 2 \n\n\n \n\n you get the       point.

Я хотел бы использовать String.replaceAll(String regex, String regex) для замены любой подстроки пробелов, содержащей более двух вхождений \n на "\n\n".

Есть идеи?

** Редактировать: **

Извините за отсутствие точности. Я хотел бы, чтобы вышеприведенные тексты были изменены на:

\n\nTitle here\n\nMenu Item 1\n\nMenu Item 2\n\nyou get the       point.

Я хочу, чтобы любая подстрока, которая была только пробелом и содержала более двух символов новой строки, была заменена на "\n\n".

Ответы [ 2 ]

5 голосов
/ 28 мая 2010
str.replaceAll("\\s*\n\\s*\n\\s*\n\\s*", "\n\n")

Это заменит любую пробел-подстроку, содержащую более 2 \n, и заменит ее на \n\n.

Ссылка на регулярные выражения Java, которую я всегда использую, находится здесь . Это должно помочь вам создавать регулярные выражения в будущем.

1 голос
/ 28 мая 2010

Другой вариант:

  str.replaceAll("(?m)\\s*$", "\n").replaceAll("\n{3,}", "\n\n");

Это немного менее эффективно (две замены), но намного более чисто для меня - легко понять и изменить. Первая замена полезна во многих случаях (и может быть внутри вашей предыдущей очистки), она гарантирует, что в каждой строке нет завершающих пробелов и что у нее есть простой \n терминатор. Второй четко выразить вашу цель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...