Tôi đang sử dụng chương trình Perl để trích xuất văn bản từ một tệp. Tôi có một mảng các chuỗi mà tôi sử dụng như delimiters cho các văn bản, ví dụ:Làm cách nào để xử lý các ký tự đặc biệt trong một regex Perl?
$pat = $arr[1] . '(.*?)' . $arr[2];
if ($src =~ /$pat/) {
print $1;
}
Tuy nhiên, hai trong số những chuỗi trong mảng là $450
và (Buy now)
. Vấn đề với các biểu tượng này là các ký hiệu trong các chuỗi biểu diễn kết thúc chuỗi và nhóm chụp trong các biểu thức chính quy Perl, do đó văn bản không phân tích cú pháp như tôi dự định.
Có cách nào khác không?
Cụ thể, \ Q sẽ không bảo vệ chống lại các ký tự thoát được dấu gạch chéo ngược. quotemeta là đến nay các giải pháp tổng quát hơn. –
@ BenBlank: Bạn đang nói về cái gì? '\ Q' * biên dịch thành *' quotemeta'. Họ là những chức năng tương tự. Tương tự, '\ L' biên dịch thành' lc', '\ U' thành' uc', vv '\ Q'" bảo vệ chống lại "các ký tự thoát dấu chéo ngược hoàn toàn tốt, vì ** nó là' \ Q' sau khi tất cả! ** – tchrist