Обращаясь за помощью, всегда не забывайте четко указывать, что вы пытаетесь сделать, предоставьте подробную информацию и минимальный пример .
Я предполагаю, что выу вас есть набор запросов, и вы хотите снять ограничение, чтобы запросы возвращали полный результат, и вы хотите сохранить пробелы в конце (это может быть важно для выполнения вашего запроса).
Aрабочий пример, который я тестировал в python 2.7.15rc1
и 3.6.6
:
import re
query = 'select * from entity limit 1000\r\n'
regex = r'\s+limit\s+\d+(\s*)$'
replacement = '\\1'
re.sub(regex, replacement, query, flags=re.IGNORECASE)
Ошибка в вашем регулярном выражении состоит в том, что у вас есть дополнительный квантификатор (?
) позади другого квантификатора (+
)), но квантификатору должен предшествовать атом.
Вы также можете заменить ненужные квантификаторы {1,}
на эквивалентную форму +
.
Замена, которую я использовал в примере\\1
- это группа, захваченная в регулярном выражении (та, что в скобках).
Я также добавил обязательный разделитель пробелов перед инструкцией, чтобы результат выглядел более отшлифованным.
ВыМожно узнать о регулярных выражениях для python3 и python2 (глава 7).