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;;