Нужно ли писать регулярное выражение Tcl для проверки того, что строка является четным шестнадцатеричным числом?
Regex для соответствия четным шестнадцатеричным числам в Tcl?
comment
Шестнадцатеричный номер легко. Проверка ровности по-прежнему возможна (на самом деле, все еще легко), потому что последняя цифра определяет это, но в целом вы должны прочитать stackoverflow.com/questions/4098086/ и прислушаться к его мудрости.
- person   schedule 31.03.2011
Ответы (2)
Этот код tcl сделает работу:
if {[regexp -linestop -nocase {^[\da-f]*[02468ace]$} $input]} {
# Success
} else {
# Fail
}
Обратите внимание, что a, c и e также являются четными числами, и вам нужно -nocase, чтобы соответствовать a-f, а также AF.
person
Staffan Nöteberg
schedule
31.03.2011
Я добавил фигурные скобки вокруг условия if, чтобы отложить оценку.
- person glenn jackman; 01.04.2011
Вам, вероятно, не нужно
-linestop; поведение по умолчанию «совпадение со всей строкой» подходит для такого рода задач.
- person Donal Fellows; 02.04.2011
Это должно быть регулярное выражение?
proc is_even {n} {expr {($n & 1) == 0}}
if {[is_even 0xdeadbeef]} {puts even} else {puts odd}
person
glenn jackman
schedule
31.03.2011