Добрый день, Господа! Написал шаблон регулярного выражения и не могу довести его до ума. [vba]
Код
Function Парсинг(строка As String, Optional место As String) As Variant Dim prov As Boolean 'Переменная, служащая для проверки строки по шаблону Dim myR As RegExp 'Объктная переменная для создания шаблона с регулярным выражением Dim myCollection As MatchCollection Dim myMatch As Match 'Начало кода Set myR = New RegExp myR.Global = True myR.IgnoreCase = True myR.Pattern = "\d{1,4}\.*\d*(_| )?(бис|упл|ур|у|р)?[^а-яё]?(\(|_)?(расш)?\)?" 'шаблон регулярного выражения prov = myR.Test(строка) If prov Then Set myCollection = myR.Execute(строка) Else Парсинг = "Объект не определен" Exit Function End If x = myCollection(0) x = LCase(x) x = Replace(x, "_", "") x = Replace(x, "(", "") x = Replace(x, " ", "")
Парсинг = x End Function
[/vba] Приложил файл с примером-там обозначил, что требуется. Может это невозможно через регулярки сделать, а я сижу голову "ломаю". Может кто подскажет? Заранее благодарю!
Добрый день, Господа! Написал шаблон регулярного выражения и не могу довести его до ума. [vba]
Код
Function Парсинг(строка As String, Optional место As String) As Variant Dim prov As Boolean 'Переменная, служащая для проверки строки по шаблону Dim myR As RegExp 'Объктная переменная для создания шаблона с регулярным выражением Dim myCollection As MatchCollection Dim myMatch As Match 'Начало кода Set myR = New RegExp myR.Global = True myR.IgnoreCase = True myR.Pattern = "\d{1,4}\.*\d*(_| )?(бис|упл|ур|у|р)?[^а-яё]?(\(|_)?(расш)?\)?" 'шаблон регулярного выражения prov = myR.Test(строка) If prov Then Set myCollection = myR.Execute(строка) Else Парсинг = "Объект не определен" Exit Function End If x = myCollection(0) x = LCase(x) x = Replace(x, "_", "") x = Replace(x, "(", "") x = Replace(x, " ", "")
Парсинг = x End Function
[/vba] Приложил файл с примером-там обозначил, что требуется. Может это невозможно через регулярки сделать, а я сижу голову "ломаю". Может кто подскажет? Заранее благодарю!Miuki
Доброе время суток. В рамках представленного примера что на что, можно так [vba]
Код
Public Function getFoo(ByVal fromText As String) As String Dim pReg As Object, pItems As Object, sResult As String, sItem Set pReg = CreateObject("VBScript.RegExp") pReg.Pattern = "(\d{1,4}\.*\d*)(?:[^\dа-я]*(расш|у(?!г)))?(?:[^\dа-я]*(расш|у(?!г)))?" Set pItems = pReg.Execute(fromText) If pItems.Count > 0 Then For Each sItem In pItems(0).SubMatches sResult = sResult & sItem Next End If getFoo = sResult End Function
[/vba]
Доброе время суток. В рамках представленного примера что на что, можно так [vba]
Код
Public Function getFoo(ByVal fromText As String) As String Dim pReg As Object, pItems As Object, sResult As String, sItem Set pReg = CreateObject("VBScript.RegExp") pReg.Pattern = "(\d{1,4}\.*\d*)(?:[^\dа-я]*(расш|у(?!г)))?(?:[^\dа-я]*(расш|у(?!г)))?" Set pItems = pReg.Execute(fromText) If pItems.Count > 0 Then For Each sItem In pItems(0).SubMatches sResult = sResult & sItem Next End If getFoo = sResult End Function