嘿嘿,CJK汉字的Unicode编码有基本集、扩展A集、扩展B集、扩展C集……
并非楼主所说# [\u4E00-\u9FA5]+$ 匹配简体 这么简单.
AU3正则也许并不支持\u,仅仅是也许.因为我没有找到并不代表没有这个参数.
#include <array.au3>
Local $str = "阿中A華华b人-民c臺灣共E0和位で表現する文字符号化形式及び文字符号化スキーム。ASCIIに9r国90會館ねちちせのひノセタツヒヌニック"
$abc=_regexp($str,0)
msgbox(0,'单字节',$abc)
$abc=_regexp($str,1)
msgbox(0,'简体中文',$abc)
$abc=_regexp($str,2)
msgbox(0,'非简体双字节字符',$abc)
Func _regexp($input,$flag=1);flag,0='单字节字符',1='简体中文',2='其它双字节字符'
local $single,$due,$other
If StringRegExp($input, '[^\x00-\xff]+', 0) Then
$temp = StringSplit($input, '')
For $i = 1 To $temp[0]
If BinaryLen(StringToBinary($temp[$i])) = 2 Then
$high = BinaryMid(StringToBinary($temp[$i]), 1, 1)
$low = BinaryMid(StringToBinary($temp[$i]), 2, 1)
If $high >= 0xb0 And $high <= 0xf7 And $low >= 0xa1 And $low <= 0xfe Then
$due&=$temp[$i]
Else
$other&=$temp[$i]
EndIf
Elseif BinaryLen(StringToBinary($temp[$i])) =1 Then
$single&=$temp[$i]
EndIf
Next
select
case $flag=0
return $single
case $flag=1
return $due
case $flag=2
return $other
EndSelect
EndIf
EndFunc ;==>_regexp
|