2013-04-24 4 views
0

나는유니 코드 문자로 루비 문자열을 검사하려면 어떻게해야합니까?

"#gefährlicher #blödsinn".scan(/#(\w+)/).flatten 

IRB는 응답 말 :

"#gef��hrlicher #bl��dsinn".scan(/#(\w+)/).flatten 

나는 내가 원하는 것을 분명히 아니다

=> ["gef", "bl"] 

를 얻을.

내가 뭘 잘못하고 있니?

+0

... 당신이 => 부분 분명히 IRB 응답 "와 ... IRB 응답"무슨 뜻인지 몰라 말했다 , 터미널이 문자를 올바르게 표시하도록 구성되어 있지 않습니다. 확률은 UTF-8이지만 ISO-8859-1 또는 그 변형이 가능하거나 WIN-1252가 좋다. LOCALE 설정이나 터미널을 조정하면 사라질 수 있습니다. –

답변

4

this answerRegex doducmentation, \w[a-zA-Z0-9_]에 대해서만 우수합니다. \p{Word}을 원합니다.

"#gefährlicher #blödsinn".scan(/#(\p{Word}+)/).flatten 
# => ["gefährlicher", "blödsinn"] 

는 "물음표"문자를 받고 있다면 내가

+0

내가 입력 한 것과 irb가 그것을 해석하는 것과는 차이가 있습니다. 나는 움라우트로 텍스트를 입력하고 일단 엔터를 누르면 그것들이 프린트됩니다. chars. 그것은 당신에게 일어나는 것 같지 않기 때문에 매우 이상합니다. – Jan

+0

이렇게하면 [ "gef", "bl"] 같은 결과를 얻을 수 있습니다. – Jan

+0

어쩌면 그것은 일부 readline 딸꾹질과 루비도 정규 표현식도 할 수 없다 ... – Jan

관련 문제