Страницы: 1
RSS
Регулярные выражения - извлечь дату, которые стоит после определенных слов
 
Здравствуйте всем!
хотел вытащить дату, которые стоит сразу после слова "до", или "от"  используя функцией RegExpExtrac от   Николай Павлов, но к сожалению у меня не получается.
прошу Вас помочь, а если  функцией RegExpExtrac не подходит, то написать функцию. с помощью power query  не интересуется
пример во вложении.
Изменено: azma - 19.04.2020 08:59:08
 
Доброе время суток
Цитата
azma написал:
сразу после слова "до", и "от"
Точно и? Может всё же или? Вариант для или
Код
Public Function getDateFromText(ByVal fromText As String) As String
    Static pReg As Object
    If pReg Is Nothing Then
        Set pReg = CreateObject("VBScript.RegExp")
        pReg.Pattern = "(?:от|до) +(\d{1,2}\.\d{1,2}\.(?:\d{2}|\d{4}))(?=\D|$)"
    End If
    getDateFromText = pReg.Execute(fromText)(0).SubMatches(0)
End Function
Изменено: Андрей VG - 19.04.2020 08:45:35 (копия вставка не русской локали)
 
azma,
Здравствуйте!
Вариант во вложении.
 
Даже макрос не нужен вот можно использовать встроенные функции работы с текстом
 
Огромное спасибо все!!!
 
Цитата
aequit написал:
Здравствуйте!Вариант во вложении.
я копировал вашу функцию на другой файл, перестала работать
а в вашем файле выходит предупреждение


hxxps://ibb.co/DwNsSSc
Изменено: azma - 19.04.2020 09:22:57
 
Андрей VG,
Цитата
Вариант для или
Андрей! Добрый день! Зачем такой паттерн с использованием (?: ), если можно обойтись
Код
pReg.Pattern = "(от|до) (\d{1,2}\.\d{1,2}\.\d{2,4})"
 
Цитата
Kuzmich написал:
Зачем такой паттерн с использованием (?: ),
Исходил из ужесточения условия, год может состоять только из двух или четырёх цифр. Хотя конечно не мешало бы ещё и по допустимым цифрам даты на требуемых позициях ввести ограничение - но лень было.
 
Цитата
Kuzmich написал:
pReg.Pattern = "(от|до) (\d{1,2}\.\d{1,2}\.\d{2,4})"
что не так, у меня функция вытаскивает только  "от" и "до"
 
Цитата
Андрей VG написал:
не мешало бы ещё и по допустимым цифрам даты на требуемых позициях ввести ограничение
Когда-то писал регулярку по извлечению дат.
 
Цитата
что не так, у меня функция вытаскивает только  "от" и "до"
Код
getDateFromText = pReg.Execute(fromText)(0).SubMatches(1)
 
Цитата
Kuzmich написал:
(1)
у меня вроде же индекс 0?
 
Цитата
у меня вроде же индекс 0?
Андрей, это для
Код
pReg.Pattern = "(от|до) (\d{1,2}\.\d{1,2}\.\d{2,4})"
Страницы: 1
Наверх