2011-01-11 33 views
2

Ich habe eine Textdatei. Ich versuche es in Erlang zu analysieren.Reguläre Ausdrücke

Textformat:

pattern1 : value1 
pattern2 : value2 
pattern3 : value3 
... 

Welche Ausdrücke regelmäßig diese Datei zu analysieren? Ich brauche Schlüssel-Wert-Liste in der Ausgabe:

[{pattern1 : value1}, {pattern1 : value1}, {pattern1 : value1}]. 

Vielen Dank.

+4

Warum können Sie nicht einfach Daten bis zum ':' einlesen, rufen Sie den Schlüssel, und lesen Sie dann bis zum Zeilenumbruch und rufen Sie den Wert? –

+1

Warum teilt man die Zeichenfolge nicht nach Zeilen und dann nach jeder Zeile mit ':'? Ich kenne Erlang nicht, aber es sollte sehr einfach sein. – Kobi

Antwort

5

Auf meinem Kopf:

foo() -> 
    {ok, Fd} = file:open("file.txt", [read]), 
    process_lines(Fd, file:read_line(Fd), []). 

process_lines(_, eof, Acc) -> Acc; 
process_lines(Fd, {ok, Line}, Acc) -> 
    [Pattern, Value] = string:tokens(Line, " :\n"), 
    process_lines(Fd, file:read_line(Fd), [{Pattern,Value}|Acc]). 

Ich habe diesen Code nicht, aber so etwas wie das funktionieren soll getestet.

+0

Wie ich es auch schreiben würde. –