Używam programu Perl do wyodrębniania tekstu z pliku. Muszę szereg strun, które używać jako ograniczniki dla tekstu, na przykład:Jak obsługiwać znaki specjalne w wyrażeniu regularnym Perla?
$pat = $arr[1] . '(.*?)' . $arr[2];
if ($src =~ /$pat/) {
print $1;
}
jednak, dwóch łańcuchów w tablicy są $450
i (Buy now)
. Problem polega na tym, że symbole w łańcuchach reprezentują łańcuch końcowy i grupę przechwytywania w wyrażeniach regularnych Perla, więc tekst nie parsuje tak, jak zamierzam.
Czy istnieje sposób obejścia tego?
W szczególności \ Q nie będzie chroniło przed znakami uciekającymi ukośnikiem odwrotnym. quotemeta jest zdecydowanie bardziej ogólnym rozwiązaniem. –
@BenBlank: O czym ty mówisz? '\ Q' * kompiluje się do *' quotemeta'. Są to ta sama funkcja. Podobnie, '\ L' kompiluje się do' lc', '\ U' do' uc', itd. '\ Q'" znakomicie chroni przed znakami "uciekającymi z ukośnikiem", ponieważ ** w końcu jest '\ Q'! ** – tchrist