GET リクエストのレスポンス解析
GET リクエストのレスポンス解析処理を作ってみた。文字列解析は String より Str を使った方が楽だった。String 単体では機能が乏しいので、文字列解析をするなら Str が主体になるのかな。
#load "str.cma";; let s = "VALUE foo 0 3\r\nbar\r\nEND\r\n";; let reg = Str.regexp "VALUE \\([^ ]+?\\) \\([^ ]+?\\) \\([^ ]+?\\)\\([^\r\n]*\\)\r\n\\(.+?\\)\r\nEND\r\n";; let r = Str.string_match reg s 0;; Printf.printf ">> %B\n" r;; let key = Str.matched_group 1 s;; let flag = Str.matched_group 2 s;; let byte = Str.matched_group 3 s;; let expr = Str.matched_group 4 s;; let value = Str.matched_group 5 s;; Printf.printf "key: %s\n" key;; Printf.printf "value: %s\n" value;; Printf.printf "flag: %s\n" flag;; Printf.printf "expr: %s\n" expr;; Printf.printf "byte: %s\n" value;;