Давайте начнем с понимания всех возможных расколов. Я думаю "b"
и ":and:f"
понятны.
Пустые строки возникли в результате разделения между o
(fo-""-o
, bo-""-o
) и разделения после последнего o - до конца строки, что снова - пустая строка.
Итак, у нас есть 5 подходящих строк, которые может вернуть разделение.
Если мы разбиваем с использованием 5 - мы возвращаем не более 5 подстрок, что в точности равно 5 подстрокам, которые у нас есть, в результате получается первый вывод:
Если предел n больше нуля, то шаблон будет применен
самое большее n - 1 раз, длина массива будет не больше чем n, и
последняя запись массива будет содержать все входные данные, кроме последнего соответствующего
Разделитель
Если мы разделим, используя -2, мы вернем как можно больше [что в данном случае идентично 5]:
Если n не положительно, то шаблон будет применяться столько раз, сколько
возможно, и массив может иметь любую длину
Если мы разделяем, используя 0, мы возвращаем столько, сколько возможно - но мы отбрасываем все завершающие пустые строки:
Если n равно нулю, шаблон будет применяться столько раз, сколько
возможно, массив может иметь любую длину и конечные пустые строки
будут отброшены
Примечание: Если вы хотите игнорировать пустые строки между вхождениями o
, вы должны разделить их с помощью регулярного выражения "o+"
- которое занимает как можно больше o
, что приводит в пустых строках между o
х