2016-10-28 6 views
-1

Ich versuche, eine Funktion in Ruby zu schreiben, die eine Zeichenfolge aufnehmen und dann basierend auf bestimmten Kriterien teilen kann. Dies wird verwendet, um Grammatik zu simulieren und beliebige Wortsequenzen zu erzeugen. Die Zeichenfolgen sind im folgenden Format vorhanden:Zerlegen einer Zeichenfolge in ein Array mit Regex in Ruby

Wie würde ich das erreichen? Ich bin etwas verloren, wie man die Regex und wie man die Elemente aus der Zeichenfolge in ein Array extrahiert.

+1

Ich sehe, dass Sie eine Antwort auf diese Frage erhalten haben, aber in der Zukunft wäre es besser, Ihre Versuche, dies selbst zu lösen. Auf diese Weise kann Ihnen die Antwort nicht nur guten Code geben, sondern sie können Ihnen helfen, Ruby besser zu verstehen und daraus zu lernen. – thesecretmaster

Antwort

1
str = "\n<start>\nYou <adj> <name> . ;\nMay <curse> . ;\n" 

str.lines # Break on newlines 
    .map{| l | l.gsub "\n", '' } # remove trailing newlines 
    .map{| l | l.gsub /\s*;$/, '' } # remove trailing spaces and ; 
    .reject{| l | l.empty? }  # remove empty elements 

=> ["<start>", "You <adj> <name> .", "May <curse> ."] 
+0

Wenn ich versuche, dies mit dem zweiten Beispiel zu verwenden „\ n \ nDie ;. \ N; \ n“ ich [ „“, ‚Sie .‘], Die für den leeren Raum nicht Rechnungswesen Ich sollte bekommen ("" sollte das letzte Element im Array sein). – FlameDra

+0

In diesem Fall sollten Sie auch eine leere Zeichenfolge am Anfang des Arrays haben, da die Zeichenfolge mit "\ n" beginnt. –

+0

Gibt es eine Möglichkeit, die Regex so einzurichten, dass nur das erste "\ n" ignoriert wird? – FlameDra

Verwandte Themen