Python выполняет поиск всех многострочных блоков в текстеPython

Программы на Python
Ответить
Anonymous
 Python выполняет поиск всех многострочных блоков в тексте

Сообщение Anonymous »

У меня есть текст с SQL-запросами, из которого я хочу извлечь все блоки SELECT:

Код: Выделить всё

sql_que = """
select p.value_n, p.enabled from proper p;

select p.value_n, p.enabled
from proper p
where p.property_name = 'PROP1';

(select p.value_n, p.enabled
from proper p
where p.property_name = 'PROP1'
union all
select p.value_n, p.enabled
from proper p
where p.property_name = 'PROP2'
)"""
Используя следующее регулярное выражение:

Код: Выделить всё

import re
res = re.findall('\(?select.*\n.*\n.*\n.*[;\)]', sql_que2)
Я нашел этот запрос из 4 строк:

Код: Выделить всё

"select p.value_n, p.enabled
from proper p
where p.property_name = 'PROP2'
)"
Но это регулярное выражение работает только для 4-строчных запросов.
И когда я хочу улучшить запрос, чтобы он работал не только для 4-строчных запросов:

Код: Выделить всё

res = re.findall('\(?select.*(\n.*)*[;\)]', sql_que2)
тогда ничего не возвращается.
Как можно изменить запрос в этом случае? И возможно ли это вообще?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»