作者JeffHung (御风只配做笨木头)
看板perl
标题Re: [问题] Escape R.E. variable
时间Tue Sep 7 10:07:12 2004
※ 引述《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