Экранирование строки регулярного выражения в Python
Я хочу использовать ввод от пользователя в виде шаблона регулярного выражения для поиска по некоторому тексту. Он работает, но как я могу обрабатывать случаи, когда пользователь помещает символы, имеющие смысл в регулярном выражении? Например, пользователь хочет выполнить поиск Word (s)
: механизм regex примет группу (s)
. Я хочу, чтобы это воспринималось как строка "(s)"
. Я могу запустить replace
на пользовательский ввод и заменить (
с \(
и )
с помощью \)
но проблема в том, что мне нужно будет заменить все возможные символы регулярных выражений. Вы знаете какой-нибудь лучший способ?
- "^" В шаблоне регулярного выражения сделать ошибку
- Можно ли ссылаться на предыдущую группу в пределах одного и того же регулярного выражения?
- Извлечь вес элемента из его описания с помощью регулярного выражения в python
- Выбор текста после регулярного выражения
- Регулярное выражение зависит от буквы перед этим
Используйте re.escape()
для этого:
4.2.3. Содержание модуля
побег (строка)
Возвращаемая строка со всеми неалфавитными спицами; это полезно, если вы хотите совместить произвольную литеральную строку, которая может содержать метасимволы регулярного выражения.
Простейший пример, поиск любого присутствия предоставленной строки, необязательно сопровождаемого 's', и возврат объекта соответствия.
def simplistic_plural(word, text): word_or_plural = re.escape(word) + 's?' return re.match(word_or_plural, text)
Вы можете использовать re.escape () :
re.escape (string) Возвращаемая строка со всеми неалфавитами обратной косой черты; это полезно, если вы хотите совместить произвольную литеральную строку, которая может содержать метасимволы регулярного выражения.
>>> import re >>> re.escape('^a.*$') '\\^a\\.\\*\\$'
К сожалению, re.escape()
не подходит для строки замены:
>>> re.sub('a', re.escape('_'), 'aa') '\\_\\_'
Решение заключается в замене в лямбда:
>>> re.sub('a', lambda _: '_', 'aa') '__'
потому что возвращаемое значение лямбда обрабатывается re.sub()
в виде строки.
Попробуйте:
\ Q и \ E в качестве якорей
Поместите условие Or для соответствия полному слову или регулярному выражению.
Ссылка ссылки: как совместить целое слово, которое включает специальные символы в регулярном выражении
- Файл .txt для поиска по Python для определенной строки
- найти повторяющееся выражение с использованием регулярного выражения python
- Регулярное выражение для соответствия только двум номерам
- Путаница с использованием регулярных выражений в Python
- многострочные регулярные выражения python
- условное регулярное выражение – обнаружение ошибок
- Опущение чисел с регулярным выражением
- Получите выбор цифр только в том случае, если ему предшествует минимум x цифр
- Регулярное выражение соответствует всем, кроме "/"