2016-11-30 19 views
0

私は文字 "A" であるOcamlの正規表現は、1文字の文字列、数字、およびスペースと一致しませんか?

a c x y 

ようなコマンドと一致する、XおよびYは考えている(Cは任意の文字(AZ、AZ)は、xは整数であり、yは整数であります座標へ)。 A、C、X、およびYは、単一のスペースで区切られるべき

は、だから私は、この正規表現

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

を書きました。しかし、私は

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 

utop

でそれを実行したとき、私はfalseを取得します。 ..

私はまた、スペースに合わせて、正規表現a[ ][a-zA-z][ ][0-9]+[ ][0,9]+を試してみたが、それはまた、 を働いていません誰でも

答えて

3

yの場合、正規表現はです。私はそれが[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]+$ 
+0

そうだろう、 '^ [a-zA-Z]の[0-9] + [0-9] + $' '確保する "AC 7 12 alkjdflajflkjalkfdja" 'は一致しませんか? – 14wml

+0

が正しい。 "12"の後に入力が終了しない限り、私が提供した2番目の正規表現は失敗します – mangotang

+0

ありがとうございました!!!非常に感謝:) – 14wml

関連する問題