Разделенная строка Java с регулярным выражением, все внутри двойных кавычек

Я пытаюсь разбить строку, например String s = "do not split this \"split this\"";

String[] split = s.split("(?<=\\s)| (?=\") | ((?=[^A-Za-z0-9])|(?<=[^A-Za-z0-9]));

даст мне ["do", " ", "not", " ", "split", "this", " ", "split this"];

Я хотел бы также сохранить все слова и пробелы, но игнорировать все, что находится в двойных кавычках ~

1 ответ

Решение

просто предположение:

String s = "do not split this \"split this\"";
String[] split = s.split( "(?<!\".{0,255}) | (?!.*\".*)" );  // do, not, split, this, "split this"

не разделять пробел, если пробел окружен кавычками,
разделенными на пробел, когда 255 символов слева и все символы справа от пробела не являются кавычками

Другие вопросы по тегам