写下这个题目,首先要区分的是,不是在perl的正则中找到中文,那样只要根据字符集的范围就可以找到,而是要找到给定中文字符串中是否包括指定的字词,比如,当下的某个系统中需要过滤 不厚先生的 名字。
通常,在脚本型语言如,PHP或者编译型语言如,Java中,要匹配某个字符串中是否有中文,如 张老三,大致写成这样:
/.*张老三.*/
字符集的设定,应该跟程序的代码环境保持一致即可。
在Perl中却是行不通,在网上找了一圈,未果,实验测试出的解决办法如下:
use Encode;
my $targetStr = ‘张老三’;
$targetStr = decode(“utf8”, $targetStr);
if($haystack =~ /.*$targetStr.*/g){
#—-
}
即可。