+ -
当前位置:首页 → 问答吧 → perl 正则表达式 处理中文

perl 正则表达式 处理中文

时间:2011-11-09

来源:互联网

本人是perl菜鸟一枚,刚刚学习。今天遇到了一个问题 ,我想判断某一字符串中是否出现另一字符串,是中文的,比如“战争”、“战略”中都出现“战”,但是问题出现了,如下

$type="终结";
$pre="战";
if($type=~/$pre/)
{
print"\nYes!\n";
}
else
{
print"\nNo!\n";
}

运行的结果居然是“Yes”!!!!百思不得其解。。。求高手指教,3Q~

作者: chariey   发布时间: 2011-11-09

Perl code
use Encode;

作者: imeuyniy   发布时间: 2011-11-09

引用楼主 chariey 的回复:
本人是perl菜鸟一枚,刚刚学习。今天遇到了一个问题 ,我想判断某一字符串中是否出现另一字符串,是中文的,比如“战争”、“战略”中都出现“战”,但是问题出现了,如下

$type="终结";
$pre="战";
if($type=~/$pre/)
{
print"\nYes!\n";
}
else
{
print"\nNo!\n";
}

运行的结果居然是“Yes”!!!……



cp936的windows下 "终结"默认编码为 D6 D5 BD E1 ,"战"默认编码D5 BD,"终结"的各一半刚好匹配上了"战"


话说你这例子是精心设计的吧?

作者: ccdbg   发布时间: 2011-11-09