я должен разделить IP-адрес и порт и использовать этот кодНабор переменных в регулярном выражении с совпадающими нулевой или один
set str 192.168.1.1:44
set port 23
regexp {(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d+)?} $str all ip port
puts $ip
puts $port
И это прекрасно работает. Но если использовать $ str без порта (например, 192.168.1.1), ни одна из переменных не была установлена, а TCL возвращает ошибку.
can't read "ip": no such variable
Regex все еще соответствует «192.168.1.1», без порта (я проверил его с «если» заявление) без порта, но почему она не возвращает переменные? Я ожидал $ all и $ ip.
Он должен быть '(: \ d +)' ..you нужно сделать 'colon' дополнительные – rock321987