У меня есть строка, которая может содержать специальные символы как: $
, (
, @
, #,
и т.д. Я должен смочь выполнить регулярные выражения на той строке.
Прямо сейчас, если моя строка имеет какой-либо из этих символов, regex, кажется, повреждается, так как это зарезервированные символы для regex.
Делает кто-либо знает хорошую подпрограмму, которая вышла бы приятно из любого из этих символов для меня так, чтобы позже я мог сделать что-то как:
$p_id =~ /^$key/
Из вашего описания звучит так, будто у вас есть его задом наперед. Вам не нужно избегать символов в строке, на которой вы соответствуете ($ P_ID), вам нужно избежать строки спинки «^ $ ключ».
Учитывая:
$p_id = '$key$^%*&#@^&%$blah!!';
Использование:
$p_id =~ /^\$key/;
или
$p_id =~ /^\Q$key\E/;
Пара \ q, \ e относится к всем между литералом. Другими словами, вы не хотите искать содержимое клавиши переменной $, но фактическую строку «$ ключ». Первый пример просто убегает в $.