Używam Ruby 1.9 i próbuje dowiedzieć się, który REGEX muszę zrobić to prawda:Jak dopasować słowa unicode z rubinem 1.9?
Encoding.default_internal = Encoding.default_external = 'utf-8'
"föö".match(/(\w+)/u)[1] == "föö"
# => false
Używam Ruby 1.9 i próbuje dowiedzieć się, który REGEX muszę zrobić to prawda:Jak dopasować słowa unicode z rubinem 1.9?
Encoding.default_internal = Encoding.default_external = 'utf-8'
"föö".match(/(\w+)/u)[1] == "föö"
# => false
# encoding=utf-8
p "föö".match(/\p{Word}+/)[0] == "föö"
http://www.ruby-forum.com/topic/208777
i
http://www.ruby-forum.com/topic/210770
może mieć wskazówki dla Ciebie.
Można również użyć (udokumentowany) \p{L}
rzeczowe Ex:
$ ruby -ve "p '℉üüü' =~ /\p{L}/"
ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-linux]
1
Można manually turn on Unicode matching użyciu wewnątrz (?u)
składnię:
"föö".match(/(?u)(\w+)/)[1] == "föö"
# => true
Jednak użycie Unicode Property Składnia (Odpowiedź Steenslaga) lub POSIX Brackets Składnia jest lepszym stylem, ponieważ oba automatycznie automatycznie respektują punkty kodowe Unicode:
"föö".match(/(\p{word}+)/)[1] == "föö"
# => true
"föö".match(/([[:word:]]+)/)[1] == "föö"
# => true
Aby uzyskać więcej informacji o dopasowywaniu znaków Unicode w wyrażeniach regularnych w języku Ruby, zobacz artykuł .
Konwertuj oba ciągi na ten sam kod Unicode, niż można dopasować. Za pomocą Iconv możesz skonwertować ciąg znaków do określonego unicode. –
Dodano domyślne kodowanie. Nadal nie działa ... – Reactormonk
Spróbuj umieścić komentarz "# kodowanie utf-8" na początku skryptu i upewnij się, że plik skryptu to utf-8. – Nakilon