Я пытаюсь построить регулярное выражение, чтобы соответствовать всем битам логического поиска. Я могу подобраться ближе, но в итоге пропускаю несколько матчей. Вот то, что у меня так далеко.
Строка для проверки:
"фу и бар или база и все такое"
Вот что у меня так далеко (язнаете, мне не хватает некоторых символов, таких как кавычки, парены, и т. д. ,Добавляя + к концу регулярного выражения, он соответствует всей строке, но, похоже, игнорирует некоторые группы захвата после первой группы слов и затем захватывает последний бит (надеюсь, что это имеет смысл).
Желаемый результат:
[
"foo AND bar OR baz AND whatever",
"foo",
"AND",
"bar",
"OR",
"baz",
"AND",
"whatever"
]
ИЛИ
[
"foo AND bar",
"foo"
"AND"
"bar"
]
[
"bar OR baz",
"bar",
"OR",
"baz"
]
[
"baz AND whatever",
"baz",
"AND",
"whatever"
]
Первый желаемый результат будет предпочтительнее, я думаю. Итак, что мне здесь не хватает? Я почти уверен, что мне нужна обратная ссылка для захвата группы № 3, но не могу заставить это работать.