
Допустим, у меня есть регулярное выражение, использующее некоторые специальные символы, но также и часть с «обычным» текстом, в котором случайно есть некоторые символы. Допустим также, что я слишком ленив, чтобы начать экранировать каждый «потенциальный» специальный символ в части «обычного текста».
Как мне включить «нормальный» текстовый фрагмент, чтобы Regex не начал устраивать истерику, когда подумает, что наткнулся на специальный символ (хотя на самом деле это не так)?
В качестве примера предположим, что я ищу текст:
.*Hello it's true that ([6*.5]^2=9)
.
Я определенно не хочу старательно использовать escape-символ каждый раз, когда в этом разделе математики появляется какой-либо специальный символ (или апостроф в "don't"). С другой стороны, я ХОЧУ рассматривать бит .*
в начале как специальный символ.
Могу ли я заключить Hello it's true that ([6*.5]^2=9)
раздел так, чтобы Regex рассматривал его как обычный текст, а не как специальный?
Я использую Notepad++ для поиска и замены, но надеюсь, что ответ будет одинаковым независимо от программы.
решение1
Некоторые инструменты позволяют вам изменить, должны ли специальные символы экранироваться по умолчанию. Например, vi
(и клоны) имеют magic
режим, который управляет этим. Это может позволить вам уменьшить количество необходимых экранирований.
решение2
Попробуйте \Q
начать с литерала и закончить на \E
.
Это работает со многими разновидностями Regex, хотя, например, в Java могут возникнуть проблемы.
Информация получена из:http://www.regular-expressions.info/characters.html