2010-12-21 19 views
2

私は正規表現を使ってcase/when文を使って解析しようとしています。私はそれがリテラルの試合ではない場合でも、私に試合を与えるので、試合にいくつかのトラブルを抱えています。Rubyの正規表現は、リテラルの一致にのみ一致する方法はありますか?

例:

かのI入力($ 45、x)は、私は戻って取得: "アドレスモード: - :45間接的、x>の値が" この正規表現から:

/[(][$][1-9a-fA-F]{1,2}\s*,\s*[xX]\s*[)]/ 

を今、もしI入力($ 45 p)が、私はこの正規表現の一致を得る:理解しやすいですが、私は試合だけリテラルの一致を探したい

/[$][1-9a-fA-F]{2,4}/ 

。正規表現と正確に一致しない余分な文字がある場合、私はmatch関数がfalseを返すようにしたい。

match()やmatch()のような他の関数があります。

答えて

3

あなたの質問から、あなたが何をしているのかが少し不明です。あなたはこれを避けたい場合は、あなたの第二の正規表現は、サブストリングに

$45 

に一致するとされているのは、文字列全体が一致することを確認するためのアンカー^と$を使用します。次のようなもの:

^\(\$[1-9A-Za-z]+,\s*[xX]\s*\)$ 
+0

ありがとう!それはまさに私が探していたものでした。 – foo

+3

'^'と '$'アンカーは、行の先頭と末尾に一致します。文字列全体が正規表現にマッチするようにするには、代わりに –

+0

ジョン、\ Aと\ Zを使ってください! – foo

関連する問題