Во втором выражении используется синтаксис Unicode для сопоставления символов Unicode.
\ x {FFFF} где FFFF - от 1 до 4 шестнадцатеричных цифр
Синтаксис Perl для соответствия определенной кодовой точке Unicode. Может использоваться внутри классов персонажей.
Пример:
\ x {E0} соответствует à, закодированному только как U + 00E0.
\ x {A9} соответствует ©
Таким образом он пытается сопоставить каждый символ Unicode от U + 4e00 до U + 9fa5 (от & # x4e00; до
& # x9fa5; ), тогда как последний не является допустимым символом Юникода.
Первые выражения также пытаются сопоставить эти символы (一-龥
), но они не выражены в синтаксисе Unicode (независимо от того, противоречит ли это проблеме, которую я не знаю).
Кроме того (как уже упоминалось) первое выражение соответствует большему количеству символов, а именно א-ת
и À-ÿ
.
На второй вопрос уже очень хорошо ответил от unicornaddict.