powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Отпарсить SQL-запрос
5 сообщений из 5, страница 1 из 1
Отпарсить SQL-запрос
    #32543575
Фотография nex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите! :)

Не могу врубится, как регулярные выражения пишутся :)

Мне нужно вытащить все sql функции из sql запроса. Например из
Код: plaintext
select col1, col2 sum(co1 - col2 * (col3 /  90 ) -  2 ), ... from ....

надо вытащить всю sum(.....), от первой открывающейся скобки до последней закрывающейся.

начало функции я находить научился:
Код: plaintext
\w{ 3 ,}\(
а вот как получить все в скобках, прерываясь только на последней?

Пробовал:
Код: plaintext
\w{ 3 ,}\(.*?\)
останавливается на первой встречной ")"...

Код: plaintext
 \w{ 3 ,}?[(]{ 1 ,}.*?[)]{ 1 ,}.*?\){ 1 ,}
срабатывает только в некоторых случаях, а выражения типа avg(col3) вообще пропускает.



PS. есть у кого рекомендации хорошего сайта по написанию RegEx?

заранее спасиба :p
...
Рейтинг: 0 / 0
Отпарсить SQL-запрос
    #32543578
Фотография nex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опечатка
Код: plaintext
select col1, col2, sum(co1 - col2 * (col3 /  90 ) -  2 ), ... from ....
...
Рейтинг: 0 / 0
Отпарсить SQL-запрос
    #32543614
Фотография Green2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такой запрос лучше отпарсить с помощью лексического разбора, глянь на http://algolist.manual.ru/syntax/index.php

А по твоему вопросу, как вытащить все из функции sum, надо сделать конечный автомат, когда он встречает скобку (, увеличиивается на 1, скобку ) уменьшается, когда обнуляется, значит функция кончилась.
...
Рейтинг: 0 / 0
Отпарсить SQL-запрос
    #32543740
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
раз уж сам хочешь парсить, то yacc почитай.
...
Рейтинг: 0 / 0
Отпарсить SQL-запрос
    #32545129
Фотография nex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо Green2 за толчок в нужном направлении. Чета я слишком увлекся регулярными выражениями и забыл про старые, добрые методы решения подобных задач. RegEx конечно хорошо, но по строке бегать и скобки искать - лучше. Ни одна не уйдет :).
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Отпарсить SQL-запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]