Как распарсить строки и сделать сравнение из распарсенных слов в условии?

Katerina1993

Новичок
Здравствуйте, через цикл у меня проходит большой поток данных. Это в основном запросы SELECT, INSERT, UPDATE. Как через регулярные выражения распарсить эти строки и выбрать первое слово? Пример этих запросов.

SQL:
SELECT option_name, option_value FROM options WHERE autoload = 'yes'
SELECT * FROM posts WHERE ID = 3 LIMIT 1
Потом сделать сравнение в условии, если SELECT, то делать проверку еще раз, только на этот раз выбирать какая таблица т.е. после FROM (option, post), а также нужно еще проверить какое слово находится после WHERE (autoload, ID)?
 

antonio

Moderator
Команда форума
1. А есть ли ограничение на длину строки, которая может быть принята и обработана в цикле или есть, условно, гигабайт данных и его надо распарсить?
2. Могут ли в запросах встречаться вложенные select?
3. А если запрос написан для множества таблиц с inner (outer) join?
4. Запрос - это строго одна строка без переводов (ascii 10, 13)?
5. Какова в принципе максимальная сложность запросов, которые будут обрабатываться?

Если все просто и кратко, то регулярки тебе и не нужны, достаточно построить простой автомат для примитивного разбора.
Если все сложно и длинно, то придется плодить почти полноценный парсер (или поискать готовый).
 
Последнее редактирование:

Katerina1993

Новичок
К чему столько вопросов я уже все написала по поводу SELECT'ов. Они достаточно простые и никакие join'ы здесь не будут и вложенностей тоже. Уже второй форум и нормального ответа нет. Придется самой искать свои старые исходники с регулярными выражениями и на основе их что-то придумать.
 

Valick

Новичок
Уже второй форум и нормального ответа нет.
Возможно по причине того, что нет нормально сформулированной задачи. Для начала ознакомтесь с тем как правильно задавать вопросы https://tproger.ru/explain/xyproblem/
Мне лично интересно зачем вам понадобился подобный функционал, но не настолько интересно, что бы самому ломать над этим голову.
 

weregod

unserializer
Пока у человека в голове и "на бумаге" нет чёткой постановки задачи и нет ответа на вопрос "зачем?", прогресса, очевидно, не будет (
 

Katerina1993

Новичок
Пока у человека в голове и "на бумаге" нет чёткой постановки задачи и нет ответа на вопрос "зачем?", прогресса, очевидно, не будет (
"SELECT option_name, option_value FROM options WHERE autoload = 'yes'", помоему я все сказала понятно. Нельзя просто подсказать как получить через регулярку первое слово select.
 

antonio

Moderator
Команда форума
Последнее редактирование:

Katerina1993

Новичок
Просто дел много, нет времени ловить рыбки. Воспользуюсь preg_match и все.
 
Сверху