Re: [問題] Escape R.E. variable
※ 引述《JeffHung (御風只配做笨木頭)》之銘言:
: 想請問一下,若今天用 R.E. 要找的字串,是用變數傳進來的,但字串裡,卻內含
: R.E. 的特殊字元,這時該如何 escape 或迴避這樣的問題?
: 好比「英文」這個字串,其中「英」字的第二個 byte 是 '^' 字元,若是直接擺
: 在 R.E. 裡,就會找不到。這時,我們可以如 Perl Cookbook 6.18 所述,使用
: /\xAD\x5E/ 寫「英」字,迴避這個問題。但是,如果「英文」這個字串是從變數
: 傳來的,如:
: $s = '我的英文寶典';
: $v = '英文'; # 也許是從設定檔裡讀得
: echo "matched" if ($s =~ m/$v/);
: 這時,「英」字的第二個 byte,就會攪亂一池春水,使得 match 不成功。請問,
: 這時應該怎麼 escape 掉 '^' 字元才好?
: ps. 使用 Perl 5.005_03,暫時無法改用 Perl 5.8。
找到解法了:
$s = '我的英文寶典';
$v = '\xAD[\\x5E]文';
echo "matched" if ($s =~ m/$v/);
--
我的微笑,堅持要有鼻子。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.204.86.140
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Perl 近期熱門文章
PTT數位生活區 即時熱門文章