- (let (ssh-hosts-list)
- (while (re-search-forward "^ *\\([-.[:alnum:]]+\\)[, ]" nil t)
- (add-to-list 'ssh-hosts-list (match-string 1))
- (while (and (looking-back ",")
- (re-search-forward "\\([-.[:alnum:]]+\\)[, ]"
- (line-end-position) t))
- (add-to-list 'ssh-hosts-list (match-string 1))))
+ (let ((host-re "\\(?:\\([-.[:alnum:]]+\\)\\|\\[\\([-.[:alnum:]]+\\)\\]:[0-9]+\\)[, ]")
+ ssh-hosts-list)
+ (while (re-search-forward (concat "^ *" host-re) nil t)
+ (add-to-list 'ssh-hosts-list (concat (match-string 1)
+ (match-string 2)))
+ (while (and (eq (char-before) ?,)
+ (re-search-forward host-re (line-end-position) t))
+ (add-to-list 'ssh-hosts-list (concat (match-string 1)
+ (match-string 2)))))