Регулярное совпадение с литеральной строкой


9

Я хочу написать функцию (или использовать существующую), которая будет принимать любую строку и производить правильно экранированный Regex, который соответствует только этой строке. Какой самый быстрый и простой способ сделать это?

Ответы:


9

Вы ищете regexp-quote:

Эта функция возвращает регулярное выражение, единственным точным соответствием которого является строка. Использование этого регулярного выражения в просмотре будет успешным, только если следующие символы в буфере являются строковыми; использование его в функции поиска будет успешным, если искомый текст содержит строку.

Это позволяет запрашивать точное совпадение строк или выполнять поиск при вызове функции, которой требуется регулярное выражение.


Клянусь, я искал документы и Google, я просто не думал о цитате в качестве ключевого слова. Спасибо.
PythonNut

1
regexp-quoteимеет хорошее альтернативное использование экранирования специальных символов в строке для использования, когда функция ожидает регулярное выражение в «форме Emacs» - например, если вы не можете вспомнить, сколько обратных косых черт нужно использовать для экранирования буквального обратного слеша, просто запустите его через regexp-quoteв scratchбуфере или ielm.
dodgethesteamroller
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.