0
경우 I TCL 코드의 다음과 같은 부분이 있습니다TCL, 정규 표현식 기능과 문
#wrong format:
set in_val "12 0 2 0 0 0 1 0 3 698"
#correct format:
#set in_val "12 0 1 0 0 0 1 0 3 698"
set val_ok [regexp {(\d+)\s([01]\s)([01]\s)([01]\s)([01]\s)([01]\s)([01]\s)([01]\s)(\d+)\s(\d+).*} $in_val Var1 Var2 Var3 Var4 Var5 Var6 Var7 Var8 Var9 Var10 Var11]
if {$val_ok==1} {
# correct format
puts "Correct format, continuing..."
puts "$Var2 $Var3 $Var4 $Var5 $Var6 $Var7 $Var8 $Var9 $Var10 $Var11"
} else {
# wrong format
puts "Wrong format, stimulus [$in_val]"
}
나는 정규 표현식 기능을 설명하는 형식이 정확한지 확인하고자합니다. in_val var의 형식이 올바른 경우 모든 것이 정상이며 if 블록이 실행됩니다. 나는 창문은 ActiveState ActiveTcl 8.5.11.1를 사용하고
invalid command name "12 0 2 0 0 0 1 0 3 698"
while executing
"$in_val"
invoked from within
"if {$val_ok==1} {
# correct format
puts "Correct format, continuing..."
puts "$Var2 $Var3 $Var4 $Var5 $Var6 $Var7 $Var8 $Var9 $Var10 $Var11"
} else {..."
(file "xxx.tcl" line 3)
: 형식은, 대신 다른 블록을 입력하는 잘못된 경우 그러나, 나는 다음과 같은 오류가 발생합니다. val_ok = 0이고 정규식이 일치하지 않을 때 오류가 나타나는 이유는 무엇입니까? 감사합니다.
puts "Wrong format, stimulus [$in_val]"
^
|
you are trying to execute $in_val here
는 대괄호를 참조하십시오
J-B는
사실, 당신이 맞다 : 당신은 아직도 당신이 그들을 탈출 백 슬래시 수있는 대괄호를 인쇄하려면
: 그들을 제거하면 오류를 방지한다. 그런 식으로 쓰는 것이 진짜 의미가 없다는 것을 알았지 만 실수로 언급되지 않았기 때문에 그것이 내 오류의 기원이라고 생각하지 않았습니다. 감사합니다. 어쨌든! – feronjb