Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Выделить из строки обозначение(я) ГОСТ/ОСТ/ТУ (http://forum.oszone.net/showthread.php?t=339458)

blackeangel 27-02-2019 21:44 2860457

Выделить из строки обозначение(я) ГОСТ/ОСТ/ТУ
 
Собственно как это сделать? При условии того, что может быть записан с годом и без, слитно(ГОСТ1234/ТУ3846855469/ОСТ4Г0) и правильно (ГОСТ 1234/ ОСТ 4Г0/ ТУ 396476457). В строке может попадаться один или несколько раз или и ту и гост и ост.
Думал в сторону Mid , не знаю как сделать когда больше одного обозначения попадается.

Iska 27-02-2019 22:03 2860465

blackeangel, я бы попробовал регулярками. А выложите всевозможные (в смысле не «все возможные», а разнообразные, какие встречались) образцы в тексте. Попробуем разобраться вместе.

blackeangel 28-02-2019 21:24 2860628

Цитата:

Цитата Iska (Сообщение 2860465)
blackeangel, я бы попробовал регулярками. А выложите всевозможные (в смысле не «все возможные», а разнообразные, какие встречались) образцы в тексте. Попробуем разобраться вместе.

Примерно следующее:
Код:

Ехал грека через реку ГОСТ1234-80 видит грека в реке рак ТУ 38-200-16-45-2001 сунул грека в реку руку ГОСТ 1234 рак за руку грека цап.
Ехали медведи на велосипеде ОСТ 4Г0.010.016 пряники жуют.
А комарики на воздушном шарике ТУ68758-448-93966-90, раки ОСТ107.016.322 на хромой собаке ГОСТ 1.2346-81
А за ними кот ОСТ 4Г0.016.019-2014 задом наперёд ТУ68958-458-93966 и смеётся.


Iska 28-02-2019 22:38 2860638

blackeangel, попробуйте так (на WSH; думаю, перевод на VBA для Вас особых затруднений не составит):
Код:

Option Explicit

Dim strContent
Dim objMatch


With WScript.CreateObject("VBScript.RegExp")
        .Pattern    = "(ГОСТ|ГОСТ Р|ОСТ|ТУ) *?[\d\.\-Г]+\d"
        .IgnoreCase = True
        .Global    = True

        With WScript.CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\Мои проекты\0248\0001.txt")
                strContent = .ReadAll()
                .Close
        End With

        If .Test(strContent) Then
                For Each objMatch In .Execute(strContent)
                        WScript.Echo objMatch.Value
                Next
        Else
                WScript.Echo "Nothing found."
        End If
End With

WScript.Quit 0

Предвижу большие проблемы с отраслевыми стандартами.

blackeangel 01-03-2019 07:33 2860651

Iska, за код спасибо.
Цитата:

Предвижу большие проблемы с отраслевыми стандартами
А вот это как раз должен был быть следующим вопросом) СТП и СТО и дальше хрен угадаешь что...
Так же это касается инструкций.

Суть в том что надо из составов технологических процессов выбрать всю документацию применяемую в предприятии....

Iska 01-03-2019 18:26 2860732

Цитата:

Цитата blackeangel
А вот это как раз должен был быть следующим вопросом) СТП и СТО и дальше хрен угадаешь что... »

Тогда никак. Чтобы что-то найти — нужно знать. что искать. Моё же замечание касалось буквы «Г». По-хорошему, нужно иметь весь возможный перечень. Мне лично не удалось найти даже по старым союзным ОСТам такой перечень, что уж про нынешние говорить…

Цитата:

Цитата blackeangel
Суть в том что надо из составов технологических процессов выбрать всю документацию применяемую в предприятии.... »

А в каком она формате? Если в Word'овском — могу предложить полуавтомат: «скармиваем» скрипту документ, набор документов, каталог с документами, набор каталогов (разумеется, копии, а не оригиналы), он их «шерстит», пытаясь по заданным принципам найти похожее на ГОСТы, ОСТы и т.п., раскрашивает их выделением, затем сохраняет документ. После чего человек «ручками» открывает документ, смотрит «глазками» и, ориентируясь на выделенное, собирает ГОСТы, ОСТы и т.п., например, в Копилку (Ctrl-F3), после чего вставляет собранное в новый документ. Потом, конечно, будет ещё вопрос приведения всего этого безобразия к единому и правильному написанию, а также удалению дубликатов, но это уже, действительно, будет потом.

В общем, смотрите: если стоит задача собрать наиболее точную информацию — тогда только так. Если задача стоит немного иная — «На, и отъ@@@сь», тогда можно и тупо ограничиться только тем, что соберёт скрипт.

blackeangel 01-03-2019 18:47 2860735

Iska,
Цитата:

А в каком она формате?
.db MySQL
Цитата:

Чтобы что-то найти — нужно знать. что искать.
Ну первые абревиатуры есть и известны.

Iska 01-03-2019 19:47 2860754

blackeangel, а внутри что? char, wchar, або какой-нибудь blob?


Время: 23:18.

Время: 23:18.
© OSzone.net 2001-