🦔
[Bug #20617] 正規表現のアラビア語の Unicode プロパティに関するバグ報告
[Bug #20617] /\pArabic/ character property doesn't match certain Arabic characters
- 正規表現の Unicode プロパティの
\p{Arabic}
が一部のアラビア文字にマッチしていないというバグ報告
str = "شغل مرحلة أولى ، جداً؟"
# \p{Arabic} にマッチしない文字がいくつか存在する
# スペース, カンマ, クエッション, fatahan
p str.chars.reject {|char| /\p{Arabic}/.match(char)}.uniq
# => [" ", "،", "ً", "؟"]
- これは
Arabic
というプロパティは用字(scripts)
を対象としており一般句読点(Punction)
は含まれないのでこういう挙動になるらしい- https://bugs.ruby-lang.org/issues/20617#note-1
- Unicode にはこの2つの概念があるぽい
- 両方とも含めるようにする場合は
ブロック(block)
を参照するIn_Arabic
を利用することができるらしい
str = "شغل مرحلة أولى ، جداً؟"
# スペースだけ該当しない
p str.chars.reject {|char| /\p{In_Arabic}/.match(char)}.uniq
# => [" "]
- 更に
In_Arabic
だけでは不十分な可能性もあり、他のblock
も指定する必要があるとのこと
/\p{In_Arabic}|\p{In_Arabic_Extended_A}|\p{In_Arabic_Extended_B}|\p{In_Arabic_Extended_C}|\p{In_Arabic_Mathematical_Alphabetic_Symbols}|\p{In_Arabic_Presentation_Forms_A}|\p{In_Arabic_Presentation_Forms_B}|\p{In_Arabic_Supplement}/
- Unicode むずかしい…
Discussion