Регулярное выражение Python: проблемы пропуска разделителя между кавычками - PullRequest
0 голосов
/ 28 августа 2018

Я новичок в регулярных выражениях и пытаюсь разделить на основе (и / или) в качестве разделителей

Я использовал решение, представленное в: https://stackoverflow.com/a/18893443/5164936

и изменил мое регулярное выражение как:

re.split(r'(\s+and\s+|\s+or\s+)(?=(?:[^"]*"[^"]*")*[^"]*$)', s)

, который работает как брелок для большинства моих случаев использования, за исключением следующего ввода:

'col1 == "val1" or col2 == \'val1 and " val2\''

разделение не удалось для этого конкретного случая, и я попытался изменить вышеприведенное регулярное выражение с другой комбинацией, но безуспешно. Может кто-нибудь, пожалуйста, помогите исправить это регулярное выражение.

1 Ответ

0 голосов
/ 28 августа 2018

Вы можете использовать решение PyPi regex :

import regex

s = 'col1 == "val1" or col2 == \'val1 and " val2\''
res = regex.split(r'''(?V1)(?:"[^"]*"|'[^']*')\K|(\s+(?:and|or)\s+)''', s)
print([x for x in res if x])
# => ['col1 == "val1"', ' or ', 'col2 == \'val1 and " val2\'']

См. Демоверсию Python онлайн .

Подробнее

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