Сейчас разбирался с обработкой адресов, заметил, что без решеток в начале и конце условия оно не обрабатывается. С чем это может быть связано и почему эти решетки обязательны?
Потому что это шаблон, который потом будет заменен, и его надо отличать от просто текста в значении полей. Вы ведь можете сделать адрес вида /catalog/ID/123, при этом шаблон будет вида /catalog/ID/#ID#/