2010-12-10 3 views
3

Wir versuchen, einen regulären Ausdruck zu finden, mit dem wir Sätze in Wörter aufteilen können. Natürlich ist die unmittelbare Antwort zu \w zu verwenden, außer dass es auf _ nicht teilt, die wir benötigen. Dann versuchten wir [a-zA-Z0-9] (wir möchten, dass für Zahlen in Worte ermöglichen), das Problem ist, dass es auf Akzente spaltet, die in vielen langues ziemlich verbreitet sind ...Ruby Regular Expression, um Wörter, einschließlich Akzente und andere UTF8-Zeichen zu entsprechen

So, im Idealfall, was regexp sollte ich verwenden Sie den folgenden Satz in den folgenden Worten zu spalten:

"je ne Deguste pas d'asperges, Auto je n'aime pas ça"

info

["Je", "ne", "déguste", "pas", "d", "asperges", "auto", "je", "n", "aime", "pas", " ça "]

+2

einen Blick auf dieses rubin Forum Thread: http://www.ruby-forum.com/topic/415626 –

+0

How do you mit Bindestrichen wie "im mittleren Alter", "einundzwanzig", "20. Jahrhundert" umgehen? –

+0

Idealerweise sollte der Bindestrich beibehalten werden. Also, "mittleren Alters" ist ein gültiges Wort. –

Antwort

2
STR = "Je ne déguste pas d'asperges, car je n'aime pas ça" 
words = STR.split /[\s,']+/ 
for w in words 
    print w, "\n" 
end 

Die Ausgabe lautet:

Je 
ne 
déguste 
pas 
d 
asperges 
car 
je 
n 
aime 
pas 
ça