Добрый день!
У меня есть скрипт для анализа текстовых массивов, работающий на регулярных выражениях. Разные части определенного текста последовательно проверяются на совпадения с разными типами массивов регулярных выражений.
Массивов регулярных выражений несколько, они разделены по типам, в каждом массиве может находится до 1500 регулярных выражений.
Вызываются они в скрипте следующим образом:
Текущая схема довольно топорная, так как при необходимости добавления новых регулярных выражений/удаления старых/редактирования - необходимо лезть в код и редактировать это там. Так как скрипт используется несколькими людьми, при любых изменениях у одного человека, ему необходимо оповестить об этом другого, что вызывает очень большой дискомфорт, так как изменений в коде может быть довольно много за короткий промежуток времени.
Очень хочется замкнуть этот процесс, например, на какой-нибудь табличке в БД.
Кто-то может помочь разобраться с тем, как в кусок кода сверху вставить селект из определенной таблицы БД, чтобы происходило ровно тоже самое, как с регулярными выражениями изнутри кода? Чтобы скрипт последовательно вызывал по одному регулярному выражению, и если не находил совпадения, переходил к следующей строчке в таблице БД, пока не переберет их всех?
Я отдаленно понимаю, как мне бросить заброс в бд и даже понимаю как мне его потом выгрузить на лист чем-то вроде следующего кода:
Но как мне перебирать регулярные выражения, которые находятся в таблице БД, нет идей совсем.
Заранее спасибо
У меня есть скрипт для анализа текстовых массивов, работающий на регулярных выражениях. Разные части определенного текста последовательно проверяются на совпадения с разными типами массивов регулярных выражений.
Массивов регулярных выражений несколько, они разделены по типам, в каждом массиве может находится до 1500 регулярных выражений.
Вызываются они в скрипте следующим образом:
Код |
---|
Private Function good_bye(ByVal call_transcript As String) As String Static RE As Object, GoodByeArray Dim i As Byte If IsArray(GoodByeArray) Then GoTo work Set RE = CreateObject("VBScript.RegExp") RE.Global = True ReDim GoodByeArray(1 To 11) GoodByeArray(1) = "(^|\s)(чего|всего)(\s|)(доброго|хорошего)" GoodByeArray(2) = "(^|\s)до(\s|)свидан" GoodByeArray(3) = "^(до(|\s)сида)$" GoodByeArray(4) = "все(\s)добро($)" GoodByeArray(5) = "до(|\s)свида" GoodByeArray(6) = "(^|\s)свидани[яе]($|\s)" GoodByeArray(7) = "всего(\s)(добр|хорош)" GoodByeArray(8) = "зачес(\s)ивана" GoodByeArray(9) = "всех(\s)благ" GoodByeArray(10) = "хорошего.{0,6}(\s)(дня|вечер)" GoodByeArray(11) = "доброй.{0,6}(\s)ночи" work: For i = 1 To 11 RE.Pattern = GoodByeArray(i) If RE.test(call_transcript) Then good_bye = RE.Execute(call_transcript)(0): Exit For Next i End Function |
Очень хочется замкнуть этот процесс, например, на какой-нибудь табличке в БД.
Кто-то может помочь разобраться с тем, как в кусок кода сверху вставить селект из определенной таблицы БД, чтобы происходило ровно тоже самое, как с регулярными выражениями изнутри кода? Чтобы скрипт последовательно вызывал по одному регулярному выражению, и если не находил совпадения, переходил к следующей строчке в таблице БД, пока не переберет их всех?
Я отдаленно понимаю, как мне бросить заброс в бд и даже понимаю как мне его потом выгрузить на лист чем-то вроде следующего кода:
Код |
---|
query_v2 = "запрос" Set conn = CreateObject("ADODB.Connection") strCnx = "Driver={PostgreSQL UNICODE(x64)};Server=адрес;Port=порт;Database=бдl;Uid=логин;Pwd=пароль" conn.Open strCnx 'Бросаем запрос в базу Set rs = CreateObject("ADODB.recordset") rs.Open query_v2, conn 'Получаем список записей из бд record = rs.GetRows() 'Обрываем подключение rs.Close conn.Close For Each item In record Range("A" & count) = item count = count + 1 Next |
Заранее спасибо