Задать вопрос
@k0r0g

Почему не работает ИЛИ в re python?

У меня есть набор SQL запросов. Хочу вытащить из них предложение WHERE.

Написал небольшой скрипт. Дам пример с одним из запросов.

s = '''FROM clinics INNER JOIN clinic_drug on clinics.clinicId = clinic_drug.clinicId
    WHERE clinic_drug.amount = 0 
    GROUP BY clinics.name;'''

import re

pattern = re.compile(r'WHERE[.\s\t]*(GROUP BY|;)')
text = pattern.findall(s)
print(text)


Возвращает пустые кавычки.
Помогите пожалуйста сформулировать паттерн.
  • Вопрос задан
  • 135 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@o5a
re.compile(r'WHERE(.+?)(GROUP BY|;)', re.S)
Но для большей точности лучше добавить токены '\b' ограничивающие слова, иначе WHERE может поймать и как часть другого слова.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Vindicar
@Vindicar
RTFM!
Ты ищешь следующее:
WHERE, за которым следует 0 или более точек, пробельных символов (в т.ч. табуляций) или табуляций, за которыми следует либо GROUP BY, либо ;

Что именно ты пытаешься извлечь из строки?
Ответ написан
karabanov
@karabanov
Системный администратор
Тренируйся здесь https://regex101.com/
Ответ написан
Комментировать
@shmaroder
https://creditpower.ru
Держи. Так?

61588470c2c12518405645.jpeg
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы