Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Отпарсить SQL-запрос / 5 сообщений из 5, страница 1 из 1
01.06.2004, 19:32
    #32543575
nex
nex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отпарсить SQL-запрос
Помогите! :)

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

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

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


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