2011-03-31 2 views
3

문자열이 16 진수인지 확인하기 위해 Tcl 정규식을 작성 하시겠습니까?정규식은 Tcl의 16 진수와도 일치합니까?

+0

16 진수는 쉽습니다. 마지막 숫자가이를 결정하기 때문에 균일 성을 검사하는 것이 가능합니다 (실제로는 여전히 쉽습니다).하지만 일반적으로 http://stackoverflow.com/questions/4098086/to-use-or-use-or-not-to-use-regular를 읽어야합니다. -expressions/4098123 # 4098123 그리고 그 지혜에 유의하십시오. – delnan

답변

4

이 TCL 코드가 작동 할 것입니다 :

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

참고 A, C와 E는 짝수이고, 당신이 -nocase는 A-F뿐만 아니라-F와 일치해야한다는 것을.

+0

평가를 지연시키기 위해 if 조건 주위에 중괄호를 추가했습니다. –

+0

아마'-linestop'가 필요하지 않습니다. 기본 "전체 문자열 일치"동작은 이러한 종류의 작업에 적합합니다. –

4

정규식이어야합니까?

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

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