Эти два символа (я выделил некоторые интересные вещи жирным шрифтом ):
В документации Ruby для Regexp
класса явно не указано, что [[:alpha:]]
соответствует , но он говорит, что выражения скобки POSIX соответствуют не-ASCII символам, и он дает [[:digit:]]
в качестве примера, говоря, что он соответствует чему-либо со свойством Unicode Nd (десятичное число ) .
Пока не бывший явным образом задокументировано, имеет смысл приравнять Regexp
скобочное выражение POSIX [[:alpha:]]
к свойству Unicode Alphabeti c, что будет означать, что U + 0BC0 соответствует и U + 0BCD не.
С другой стороны, документация для Onigmo (движок Regexp
, используемый в YARV и отраженный во всех других реализациях) делает явно указать работу [[:alpha:]]
. Фактически, он указывает его в двух разных местах, и они противоречат друг другу:
Итак, что похоже происходит, так это то, что Консорциум Unicode не рассматривает U + 0BCD как alphabeti c, и, следовательно, Onigmo и Ruby не классифицируют его как [[:alpha:]]
. В этом случае документация Onigmo неверна, а документация Ruby является неточной.