Python разбивает строку на разделитель, но не на определенный вариант такого разделителя - PullRequest
0 голосов
/ 19 октября 2018

Я хочу разделить длинную строку в Python на основе разделителя '-', но не разделять, если '-' немедленно начинается с 'fail'.Затем поместите удаленный разделитель '-' обратно на результирующие строки в массиве split.Ниже приведен пример.

Я хочу:

"--conf example1 --conf curl --fail exception --env example2"

После разделения станьте:

["--conf example1", "--conf curl --fail exception", "--env example2"]

1 Ответ

0 голосов
/ 19 октября 2018

Вы можете использовать комбинацию положительного lookahead и отрицательного lookahead:

\s+(?=--)(?!--fail)

Таким образом, мы здесь разделяемся с пробелами с положительным lookahead для поискадвойные черты и отрицательный взгляд вперед, чтобы игнорировать --fail:

>>> re.split(r'\s+(?=--)(?!--fail)', "--conf example1 --conf curl --fail exception --env example2")
['--conf example1', '--conf curl --fail exception', '--env example2']

Обратите внимание, что здесь --fail-foo также не будет разбиваться.Однако вы можете добавить пробел к отрицательному взгляду:

\s+(?=--)(?!--fail\s)
...