Ocaml上的正则表达式不匹配单个字母的字符串,数字和空格?

时间:2016-11-30 22:52:12

标签: regex ocaml

我想匹配像

这样的命令
a c x y

其中a是字母" a",c是任何字母(a-z,A-Z),x是整数,y是整数(x和y假设为坐标)。 a,c,x和y应分隔一个空格

所以我写了这个正则表达式

string_match (regexp "a [a-zA-z] [0-9]+ [0,9]+") str 0

但是当我在utop中运行时

utop # let str = "a c 7 12";;
val str : string = "a c 7 12"                                                       
utop # string_match (regexp "a [a-zA-z] [0-9]+ [0,9]+") str 0;;
- : bool = false

我弄错了......

我还尝试使用正则表达式a[ ][a-zA-z][ ][0-9]+[ ][0,9]+来匹配空格,但这也没有用

如果有人

1 个答案:

答案 0 :(得分:3)

对于y,您的正则表达式是:[0,9]。我认为它应该是[0-9]。 (注意“,”与“ - ”)。 [0,9]将匹配字符0,逗号和9.您的规范说明y是一个整数,表明[0-9]是您想要的。

所以:

a [a-zA-z] [0-9]+ [0-9]+

应该有用。

另外,考虑“锚定”你的正则表达式,方法是用^开头,它匹配输入的开头,然后用$结束,它匹配输入的结尾。

这样的事情:

^a [a-zA-z] [0-9]+ [0-9]+$