Регулярное выражение для Java разбиения с использованием пробелов и двойных кавычек - PullRequest
0 голосов
/ 21 января 2020

Какое выражение я бы использовал для разделения строки на пробелы или материал в двойных кавычках (кавычки должны быть включены в строку)?

Пробелы разделяются внутри двойных кавычек, и я не хочу, чтобы эти пробелы разделялись, только пробелы вне кавычек.

У меня есть успех с пробелами и двойными кавычками, но не для пробелов внутри двойных кавычек. Разделение разбирает эти пробелы на подстроки.

Это Java регулярное выражение. Например, это работает нормально, но "это не так"

Спасибо, Денис

1 Ответ

0 голосов
/ 21 января 2020

Разделить на следующее регулярное выражение:

\s*"[^"]*"\s*|\s+

Первая альтернатива (перед "|") содержит:

  • последовательность пробелов (фактически также Tab on \ n ), возможно, пусто,
  • двойная кавычка (открытие),
  • последовательность символов, отличная от двойной кавычки,
  • еще одна двойная кавычка (закрытие),
  • еще одна последовательность пробелов.

Вторая альтернатива (после «|») содержит только непустую последовательность пробелов.

Обе окружающие \s* в первой альтернативе предназначены для предотвращения обработки строки, подобной "xxx yyy", как 3 отдельных расщепляющих токенов (пробел до, строка в кавычках и пробел после).

Рабочий пример см. https://regex101.com/r/76jaZb/1, но поскольку этот шаблон предназначен для разбиения (не совпадает), на самом деле посмотрите на части строки источника между спичек.

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