- 论坛徽章:
- 0
|
刚开始用perl,要解决匹配汉字的问题,在网上搜到一些正则表达式,一时有搞不清区别到底在哪?就写这么个小程序测试了一下,结果让我很惊讶!很多高手不都说[\u4e00-\u9fa5]匹配汉字吗?可是结果恰好相反,我也不知道是那里用错了,还请大家指点!
还有,哪位知道中文的标点怎么匹配?先谢了!
#! usr/bin/perl
use UTF8;
@pattern = ('[\u4e00-\u9fff]','[^\u4e00-\u9fff]','[chr(0xa1)-chr(0xff)]','[^chr(0xa1)-chr(0xff)]','[\x80-\xff][\x80-
\xff]','[^\x80-\xff][^\x80-\xff]','[\x80-\xff]','[^\x80-\xff]','[\u4e00-\u9fa5\uf900-\ufa2d]','[^\u4e00-\u9fa5\uf900-
\ufa2d]','[\u4e00-\u9fa5]','[^\u4e00-\u9fa5]','[\x00-\xff]','[^\x00-\xff]');
$d = '我亲爱的2只Maomi,你知道吗?我在想你们^-^';
#mao是全角下输入的,?也是在中文状态下输入的,其他标点是英文状态下的
foreach $p (@pattern)
{@result = ($d =~ /($p+)/isg);
print "模式$p匹配结果为:@result\n";
}
我把匹配结果分了下类:
模式[\u4e00-\u9fff]匹配结果为:2 mi ^ ^
模式[^\u4e00-\u9fff]匹配结果为:我亲爱的 只Mao ,你知道吗?我在想你们 -
模式[\u4e00-\u9fa5]匹配结果为:2 mi ^ ^
模式[^\u4e00-\u9fa5]匹配结果为:我亲爱的 只Mao ,你知道吗?我在想你们 –
模式[\u4e00-\u9fa5\uf900-\ufa2d]匹配结果为:2 mi ^ ^
模式[^\u4e00-\u9fa5\uf900-\ufa2d]匹配结果为:我亲爱的 只Mao ,你知道吗?我在想你们 -
模式[chr(0xa1)-chr(0xff)]匹配结果为:2 mi, ^-^
模式[^chr(0xa1)-chr(0xff)]匹配结果为:我亲爱的 只Mao 你知道吗?我在想你们
模式[\x80-\xff]匹配结果为:我亲爱的 只Mao 你知道吗?我在想你们
模式[^\x80-\xff]匹配结果为:2 mi, ^-^
模式[\x00-\xff]匹配结果为:我亲爱的2只Maomi,你知道吗?我在想你们^-^
模式[^\x00-\xff]匹配结果为:
模式[\x80-\xff][\x80-\xff]匹配结果为:我亲爱的 只Mao 你知道吗?我在想你们
模式[^\x80-\xff][^\x80-\xff]匹配结果为:mi, ^-^ |
|