Запутал что ли? :)
ну, давайте
попроще
часто надо принять строку не из шаблона, например: "Тел. код 495 и номер 123-4-5-6-7"
чтобы выкинуть из строки все, что не цифра, можно использовать шаблон "#[^0-9]#"
в строку замены надо вписать пробел, хотя на практике обычно оставляют пустую строку.
Объясню, из чего состоит шаблон: # - разделитель, в простом случае он ограничивает начало и конец шаблона. В [] определяем диапазон интересуемого, т.е. в нашем случае это цифры 0-9. Знак ^ обозначает "НЕ". Т.е. в переводе весь шаблон "НЕ цифры" заменяем на строку замены, т.е. пробел (или другой символ, если захотите).
Если нам нужно вытащить только код города, то это можно сделать
следующим образом. Переведу "#.*код ([0-9]{3}) .*#":
.* - любое количество символов или их отсутствие, поясню, что, например, .+ - ненулевое количество любых символов. Точнее . - это любой символ, * - любое количество, + - ненулевое количество.
код - слово, как оно есть, с пробелом на конце
() - искомые данные, первые скобки (то, что внутри скобок) - это $1, вторые скобки - $2
[0-9] - цифра от нуля до девяти
{3} - впередиидущий символ повторяется три раза, т.е. [0-9]{3} - это любая трехзначная цифра
потом пробел и .*, что я описывал выше. Все вышеперечисленное заменяется на "code $1", т.е. слово code и то, что было в скобках.