Как я выхожу из специальных символов в строке, которую я интерполирую в Perl regex?

У меня есть строка, которая может содержать специальные символы как: $, (, @, #, и т.д. Я должен смочь выполнить регулярные выражения на той строке.

Прямо сейчас, если моя строка имеет какой-либо из этих символов, regex, кажется, повреждается, так как это зарезервированные символы для regex.

Делает кто-либо знает хорошую подпрограмму, которая вышла бы приятно из любого из этих символов для меня так, чтобы позже я мог сделать что-то как:

 $p_id =~ /^$key/
13
задан brian d foy 1 February 2010 в 04:03
поделиться

2 ответа

$p_id =~ /^\Q$key\E/;
22
ответ дан 1 December 2019 в 20:56
поделиться

Из вашего описания звучит так, будто у вас есть его задом наперед. Вам не нужно избегать символов в строке, на которой вы соответствуете ($ P_ID), вам нужно избежать строки спинки «^ $ ключ».

Учитывая:

$p_id = '$key$^%*&#@^&%$blah!!';

Использование:

$p_id =~ /^\$key/;

или

$p_id =~ /^\Q$key\E/;

Пара \ q, \ e относится к всем между литералом. Другими словами, вы не хотите искать содержимое клавиши переменной $, но фактическую строку «$ ключ». Первый пример просто убегает в $.

6
ответ дан 1 December 2019 в 20:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: