Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 日期时间的OCaml正则表达式_Regex_Date_Time_Ocaml - Fatal编程技术网

Regex 日期时间的OCaml正则表达式

Regex 日期时间的OCaml正则表达式,regex,date,time,ocaml,Regex,Date,Time,Ocaml,我制作了一个正则表达式来解析DD-MM-yyyhh:MM格式的日期和时间,但它似乎不起作用,但我不明白为什么。我没有得到任何错误,但它只是不接受任何日期和时间,我可以传递给我的程序 let checkDate d t = match Str.string_match (Str.regexp "\\([0][1-9]\\|[12][0-9]\\|3[0-1]\\)-\\([0][1-9]\\|1[0-2]\\)-\\(2[0-9]{3}\\)\\([0-1][0-9]\\|2[0-3]\\

我制作了一个正则表达式来解析DD-MM-yyyhh:MM格式的日期和时间,但它似乎不起作用,但我不明白为什么。我没有得到任何错误,但它只是不接受任何日期和时间,我可以传递给我的程序

let checkDate d t =
    match Str.string_match (Str.regexp "\\([0][1-9]\\|[12][0-9]\\|3[0-1]\\)-\\([0][1-9]\\|1[0-2]\\)-\\(2[0-9]{3}\\)\\([0-1][0-9]\\|2[0-3]\\):\\([0-50-9]\\)") (d ^ t) 0 with
    | true  -> true
    | false -> false
in
我可能做错了什么

{3}
不是Str中的regexp构造

let checkDate d t =
  let dr = "\\(0[1-9]\\|[12][0-9]\\|3[0-1]\\)" in
  let mr = "\\([0][1-9]\\|1[0-2]\\)" in
  let yr = "\\(2[0-9][0-9][0-9]\\)" in
  let hr = "\\([0-1][0-9]\\|2[0-3]\\):\\([0-50-9]\\)" in
  Str.string_match (Str.regexp (dr ^ "-" ^ mr ^ "-" ^ yr ^ hr)) (d ^ t) 0
这个功能有效

# checkDate "16-05-2017" "12:55";;
- : bool = true

# checkDate "16-05-2017" "12:65";;
- : bool = false

非常感谢,它非常有效!我刚开始的第一天正则表达式需要编辑你的dr=\[0-2][0-9]\\\\\\124; 3[0-1]\,因为一个月的00不存在:pHahaha,是的,我更新了它;-顺便说一句,我觉得奇怪,你的年份是2000年之后-这是一个学校项目,我们只需要创建一个火车日志,上面写着他们的旅行日期和时间,我们不知道他们算什么是正确的日期,因为有时候他们真的做了奇怪的测试,所以我们只是认为不可能在2000年之前,顺便说一下,匹配。。。用真->真|假->假真是恶心别担心,我改了