Я пытаюсь выбрать каждый запрос с SELECT, в начале и LIMIT в конце, например:REGEX вопрос, выбор запроса SQL с несколькими новыми линиями
$SelQuery = "SELECT DISTICNT C.firstname,C.lastname,C.id as clientid,QC.category_name,QR.cid,QR.catid,QR.rhid
FROM cms_question_report QR, cms_clients C,cms_questioncategory QC ,cms_reporthistory RH
WHERE C.id=QR.cid
AND QR.rhid=RH.id
AND QR.catid='".$objArray['catid']."'
AND QR.catid=QC.id
AND C.id IN($SelClids)
LIMIT $page_no,$this->Limit";
И не выбрать любой другой запрос, который Безразлично 't содержит LIMIT. Таким образом, регулярное выражение, я думал, что буду работать было так:
SELECT .*\n* LIMIT
Где я в основном о том, что он должен начать с «SELECT», тогда любыми другими символами и заканчивается LIMIT, единственная проблема, я не знаю, как обрабатывать \ n *, у меня есть несколько неизвестных номеров новых строк, и в каждой строке есть неизвестные символы, поэтому я предполагаю, что это должно выглядеть так: \ n *. \ n. * И так далее, но определенно есть способ, где я могу сказать, выберите любого персонажа, включая новую строку.
Я попытался с помощью этого решения: Regex to match any character including new lines и регулировать мое регулярное выражение:
SELECT /s* LIMIT
, но это не работает, как хорошо.
Также пробовал:
SELECT (.|\n)* LIMIT
, но это не сработало.
Не разбирайте * SQL * с * регулярными выражениями *. SQL является рекурсивным языком и может быть правильно проанализирован с помощью * контекстной свободной грамматики * ... –
Извините, я не понимаю, о чем вы говорите. Что бы SQL-рекурсивный язык имел какое-либо отношение к этому? Regex увидит это как обычный текст, а регулярное выражение на любом виде текста не имеет никакого значения. Верный? –
Кажется, вы обрабатываете исходный код для извлечения некоторых запросов. Вы используете grep? – 1010