Я отделяю строка "foo, bar, c; qual =" baz, blurb ", d; junk =" quux, syzygy "" запятыми, но хочу сохранить запятые в кавычках. На этот вопрос был дан ответ в этом Java: splitting a comma-separated string but ignoring commas in quotes вопрос, но он не работает чтобы полностью объяснить, как плакат создал этот кусок кода, который:.
line.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)", -1);
ОК, так что я понимаю, некоторые из того, что происходит, но есть немного, что сбивает с толку меня, я знаю, что первый запятая для согласования .
Затем
(?=
- это прямой поиск.
Тогда первая часть группируется
([^\"]*\"[^\"]*\").
это, где я запутаться. Поэтому первая часть
[^\"]*
означает, что начало любой строки с кавычками отдельных токенов ноль или более раз.
Тогда приходит \». Теперь это как открытие цитаты в строке или она говорят сопрягать эту цитату?
Тогда он повторяет ту же самую строку кода, почему?
([^\"]*\"[^\"]*\")
В вторая часть добавляет тот же код еще раз, чтобы объяснить, что он должен закончить с цитатами.
Может кто-то объяснить часть я не получаю?
'^'внутри квадрата скобки означают не '' '' '' '' '' ', но обратная косая черта существует как escape-символ. Поэтому' [^ \ "] *' соответствует любой строке, которая не содержит '' '. –
Спасибо, это помогло бы, если бы я знал, что часть. Я все еще не понимаю часть после [^ \ "], хотя – spaga
@ M.Shaw она должна быть' [^ \ "] *' соответствует любому символу, но не '' ', ноль или более раз. –