Добрый день!
Возможно ли с помощью регулярных выражений:
1) Все отдельностоящие слова полностью из заглавных букв сделать в формате Первая Буква Заглавная (Proper).
Например: «НОВЫЙ СВЕТ СоЛнЦе Луч9 20 САДОВОДСТВО дорога» превратить в: «Новый Свет СоЛнЦе Луч9 20 Садоводство дорога» ?
2) Вытащить улицу и номер дома часто можно с помощью следующего правила:
смотрим первую попадающуюся цифру в строке и берем то слово перед ней, которое попадается первым написанным с большой буквы.
Пример: «Санкт-Петербург, Обводный канал 45/1 строение 25Б Литер М» вытащит строку «Обводный 45»., потому что 45 - первая цифра в строке. Обводный - первое написанное с заглавной буквы перед 45.
3) Есть улицы-исключения в их название входит цифра (пример: 8 линия В.О. д.10)
У меня имеется список исключеений. Как для них сделать чтобы они вытащили ближайшее впереди и ближайший сзади номер?
Например "Санкт-Петербург г. 8-я Красноармейская ул. 27 кв.40" -> "8 Красноармейская 27"
(?:Кадетская|линия|Советская|Рабфаковский|Предпортовый|Января|Красноармейская|Утиная|Мая|Комсомольская|Муринский|Лахта|Верхний|_)
Пыталась сделать сама. Но именно эти задачки у меня не получились.
Подскажите, пожалуйста, как они решаются?
Возможно ли с помощью регулярных выражений:
1) Все отдельностоящие слова полностью из заглавных букв сделать в формате Первая Буква Заглавная (Proper).
Например: «НОВЫЙ СВЕТ СоЛнЦе Луч9 20 САДОВОДСТВО дорога» превратить в: «Новый Свет СоЛнЦе Луч9 20 Садоводство дорога» ?
2) Вытащить улицу и номер дома часто можно с помощью следующего правила:
смотрим первую попадающуюся цифру в строке и берем то слово перед ней, которое попадается первым написанным с большой буквы.
Пример: «Санкт-Петербург, Обводный канал 45/1 строение 25Б Литер М» вытащит строку «Обводный 45»., потому что 45 - первая цифра в строке. Обводный - первое написанное с заглавной буквы перед 45.
3) Есть улицы-исключения в их название входит цифра (пример: 8 линия В.О. д.10)
У меня имеется список исключеений. Как для них сделать чтобы они вытащили ближайшее впереди и ближайший сзади номер?
Например "Санкт-Петербург г. 8-я Красноармейская ул. 27 кв.40" -> "8 Красноармейская 27"
(?:Кадетская|линия|Советская|Рабфаковский|Предпортовый|Января|Красноармейская|Утиная|Мая|Комсомольская|Муринский|Лахта|Верхний|_)
Пыталась сделать сама. Но именно эти задачки у меня не получились.
Подскажите, пожалуйста, как они решаются?
Код |
---|
Function street_extract_test() 'если слово в строке полностью из заглавных букв превратить его в "Первая Заглавная" txt = "НОВЫЙ СВЕТ СоЛнЦе Луч9 20 САДОВОДСТВО дорога" Set regex = CreateObject("VBScript.RegExp") regex.Pattern = "([А-ЯЁ]+{2,})" regex.Global = True 'txt1 = regex.Replace(txt, Application.WorksheetFunction.Proper("$1")) 'Первая цифра в строке + первое перед этой цифрой слово с Заглавной буквы txt = "2Санкт-Петербург, Обводный канал 45/1 строение 25Б Литер М" regex.Global = False regex.Pattern = "([\s|^]+)([А-Я]+)([А-Яа-я0-9A-Za-z\s]+)(\d+)(\s|$)?" If regex.test(txt) Then Set matches = regex.Execute(txt) txt3 = matches.Item(0) End If End Function |
Работать надо не 12 часов, а головой.