2011-03-31 7 views
3

Tcl正規表現を書いて、文字列が偶数であることを確認しますか?Tclの16進数でも一致する正規表現ですか?

+0

16進数は簡単です。最後の数字がそれを決定するので、均一性をチェックすることはまだ可能です(実際にはまだ簡単です)。しかし、一般的に、http://stackoverflow.com/questions/4098086/to-use-or-note-to-use-regularを読むべきです。 -expressions/4098123#4098123そしてその知恵に留意してください。 – delnan

答えて

4

このTCLコードが作業を行います。

if {[regexp -linestop -nocase {^[\da-f]*[02468ace]$} $input]} { 
    # Success 
} else { 
    # Fail 
} 

注意、CとEも偶数であり、あなたは-nocaseが-Fと同様-Fと一致する必要があるということを。

+0

評価を遅らせるためにif条件の前後に中括弧を追加しました –

+0

おそらく '-linestop'は必要ありません。デフォルトの "全体の文字列と一致する"動作はこの種のタスクに適しています。 –

4

正規表現にする必要がありますか?

proc is_even {n} {expr {($n & 1) == 0}} 

if {[is_even 0xdeadbeef]} {puts even} else {puts odd}