|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.01.2011, 11:49 | #1 |
Пользователь
Регистрация: 26.06.2010
Сообщений: 36
|
регулярные выражения для поиска и замены
Подскажите, пожалуйста, как написать код, чтобы поменять местами подстроки при помощи регулярных выражений. Например, задача - изменить американский формат даты на наш. Вот код для поиска
With RegEx .MultiLine = False .Global = True .IgnoreCase = True .Pattern = "(\d{1,2})/(\d{1,2})/(\d\d\d\d)" End With А как написать замену (поменять местами первую и вторую подстроки? Заранее благодарна. |
17.01.2011, 15:07 | #2 |
Форумчанин
Регистрация: 27.09.2010
Сообщений: 376
|
Здравствуйте Елена
После каждого нахождения, в VBA впишите строчку кода (скопировав предварительно в strOldDate "старую" дату) strNewDate = Format(strOldDate, "dd/mm/yyyy") Попробуйте в прямо в запросе SELECT поле1, ..., Format([ВашеПолеСдатой], "dd/mm/yyyy") AS НоваяДата FROM Таблица; До свидания. |
17.01.2011, 19:19 | #3 |
Участник клуба
Регистрация: 10.08.2009
Сообщений: 1,796
|
Здравствуйте Елена.
OlegVE верно подсказал - "..прямо в запросе..", "..задача - изменить американский формат даты на наш.." - распространяется только на отображение даты в национальном формате, а записывается она в любом случае одним и тем же числовым значением. Вопрос "..поменять местами первую и вторую подстроки?.." - требует уточнения. Евгений. |
18.01.2011, 11:37 | #4 |
Пользователь
Регистрация: 26.06.2010
Сообщений: 36
|
Большое спасибо за участие. Случай с форматом правильный, но это лишь частный, меня же интересуют регулярные выражения, нигде не могу найти синтаксис для VBA. У меня, например, поле символьное, куда записан диапазон дат.
|
18.01.2011, 16:50 | #5 | |
Форумчанин
Регистрация: 27.09.2010
Сообщений: 376
|
Здравствуйте, Елена.
Регулярные выражения (Regular Expressions), не являются кодом, в смысле программным. Никакого отношения ни к VBA ни к какому либо другому язуку программирования не имеют (это язык описаний). Например, вы могли просто искать в тексте слово, а если это слово "вертолёт", то к авиации VBA не имел бы никакого отношения. Если Вы написали код (програмный) Код:
то надо понимать Вы написали и Set regEx = New RegExp и установили ссылку на "Microsoft VBScript Regular Expressions"... Цитата:
До свидания PS Если Вас интересуют регулярные выражения, то думаю Вам надо обратиться на форум по Perl, в нём их часто используют. В базах данных манипулируют записями и полями, т.е. какими-то готовыми блоками, не сильно рассматривая их содержимое, регулярными выражениями пользуются те, кто много работат с СОДЕРЖИМЫМ текста. |
|
18.01.2011, 17:04 | #6 |
Пользователь
Регистрация: 26.06.2010
Сообщений: 36
|
Всегда приятно пообщаться с коллегами. Чего хочу - освоить работу с регулярными выражениями. Я как раз работая в отделе, где основная задача- преобразовывать поля из различных электронных форматов для запихивания в конкретную базу. Это одна из мелких подзадач. Более большая - разбор текстовых полей (описание) на составляющие. В этом регулярки очень помогают.
Сегодня наконец нашла в книге в главе по VB.Net, в VBA работает, вот предпоследняя замены: With RegEx .MultiLine = False .Global = True .IgnoreCase = True .Pattern = "(\d{1,2})/(\d{1,2})/(\d\d\d\d)" creatstring = .Replace(creatstring, "$2/$1/$3") End With Я довольна. |
18.01.2011, 17:04 | #7 |
Пользователь
Регистрация: 26.06.2010
Сообщений: 36
|
Всегда приятно пообщаться с коллегами. Чего хочу - освоить работу с регулярными выражениями. Я как раз работая в отделе, где основная задача- преобразовывать поля из различных электронных форматов для запихивания в конкретную базу. Это одна из мелких подзадач. Более большая - разбор текстовых полей (описание) на составляющие. В этом регулярки очень помогают.
Сегодня наконец нашла в книге в главе по VB.Net, в VBA работает, вот предпоследняя замены: With RegEx .MultiLine = False .Global = True .IgnoreCase = True .Pattern = "(\d{1,2})/(\d{1,2})/(\d\d\d\d)" creatstring = .Replace(creatstring, "$2/$1/$3") End With Я довольна. |
18.01.2011, 19:39 | #8 | |
Форумчанин
Регистрация: 27.09.2010
Сообщений: 376
|
Цитата:
стр 118-119 ? http://softtime.ru/info/fridl.php?down=fridl.djvu или "$2/$1/$3", http://msdn.microsoft.com/en-us/libr...00(VS.85).aspx это всё Вы получили бы вчера... До свидания, коллега |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Регулярные выражения | Dima_D | Общие вопросы Delphi | 0 | 11.08.2010 21:16 |
регулярные выражения для постраничной навигации | ilma55 | PHP | 4 | 16.03.2010 11:26 |
Регулярные выражения | ACE Valery | PHP | 5 | 14.10.2009 11:37 |
Макрос для поиска и замены слов на слова с верхним подчеркиванием | salvafion | Microsoft Office Word | 4 | 07.09.2009 19:14 |
Макрос для поиска/замены | Davidoff | Microsoft Office Excel | 1 | 20.01.2007 16:01 |