Re: [問題] 用 regular Exp 比對中文的問題
如果只是要判斷字串是否有中文,用這樣可以嗎?
if (/[\x80-\xff]/) {
print $_;
}
換個方向做,將字元一個一個取出,然後將正常字符排除,然後把剩下的接起來:
#!/usr/bin/perl
while (<DATA>) {
$str = "";
while (/(.)/g) {
$char = $1;
unless ($char =~ /[0-9a-zA-Z#]/) {
$str .= $char;
}
}
if ($str ne "") {
print "$str\n";
}
}
__DATA__
08帥哥啦
09book#PERL
10恐龍啦
100perl
結果:
帥哥啦
恐龍啦
在Perl食譜(上) 6.18 比對多重位元組字元有提到,可以參考他的方式
※ 引述《z20240 (培根)》之銘言:
: 各位大大好,
: 小弟因為一些需要,
: 要將從mySql DataBase 中撈出來的名稱欄位(varchar)濾出是否為中文字。
: 我在網路上找尋utf8的中文範圍在u4e00-u9fa5
: 但是我用 perl 卻怎麼也match 不到
: 以下是我的 code
: for (@output){
: Encode::_utf8_on( $_->{name} );
: if ($_->{name} =~ /([\u4e00-\u9fa5])+/) {
: print " ($1) \n";
: }
: }
: match 到的內容都很奇怪。
: 例如有一筆資料:08帥哥啦
: match 到的是 (08) 而不是 (帥哥啦)
: 感覺上 perl 似乎並不認得 \u4e00 這種的表示方法...
: 請問高手們該怎麼在 regular 中表示中文字,可以讓perl看得懂...
: 多謝...
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.67.167.102
※ 文章網址: https://www.ptt.cc/bbs/Perl/M.1493899730.A.C68.html
推
05/05 01:18, , 1F
05/05 01:18, 1F
→
05/05 01:19, , 2F
05/05 01:19, 2F
推
05/05 09:23, , 3F
05/05 09:23, 3F
→
05/05 09:52, , 4F
05/05 09:52, 4F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Perl 近期熱門文章
PTT數位生活區 即時熱門文章