Проблема регулярных выражений удаляет \ n при разборе - PullRequest
1 голос
/ 03 ноября 2011

В моем коде есть регулярное выражение, [^\s"']+|"[^"]*"|'[^']*'.Моя проблема в том, что когда я делаю что-то вроде:

Matcher matcher = regex.matcher("INDIA \n PAKISTAN");
  StringBuilder returnQuery = new StringBuilder();
  while (matcher.find()) {
      String str = matcher.group();
      if (AND.equalsIgnoreCase(str) || OR.equalsIgnoreCase(str) || NOT.equalsIgnoreCase(str)) {
          returnQuery.append(str.toUpperCase()).append(" ");
      } else {
          returnQuery.append(str).append(" ");
      }
  }

, он также удаляет \ n символов, которые я хочу сохранить. Может кто-нибудь предложить решение.

Заранее признателен за помощь

Вайбхав

1 Ответ

5 голосов
/ 03 ноября 2011

Метасимвол \ s используется для поиска символа пробела. Символ пробела может быть:

  • Пробел
  • Символ табуляции
  • Символ возврата каретки
  • A новая строка символ
  • Символ вертикальной табуляции
  • Символ перевода формы

То есть, если вы используете \ s, вам не повезло. Просто используйте класс символов без \ n, например.

[ \r\t]

Таким образом, ваш \ n будет сохранен.

...