看板 Perl 關於我們 聯絡資訊
各位大大好, 小弟因為一些需要, 要將從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), 來自: 1.160.23.11 ※ 文章網址: https://www.ptt.cc/bbs/Perl/M.1493873390.A.E01.html
lgen7604: pattern改成/([\N{U+4E00}-\N{U+9FA5}]+)/試試看 05/04 15:52
CindyLinz: pattern 裡應該是 \x{4e00} 這樣的寫法吧? 05/04 16:02
lgen7604: 不確定差別在哪裡 都能work FYR:https://goo.gl/bjmmHQ 05/04 17:21
flu: perl對unicode支援很好啊 用 \p{Han}或 \p{CJK} 看看 05/05 03:20
flu: 還有新版的perl對unicode新版本的支援度也較好 05/05 03:21
flu: example https://pastebin.com/UU6Z6Qnb 05/05 03:28
z20240: 終於解決了! 謝謝大家~ 05/05 09:17