Войти

Показать полную графическую версию : Выделить из строки обозначение(я) ГОСТ/ОСТ/ТУ


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

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

blackeangel
28-02-2019, 21:24
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
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
Iska, за код спасибо.

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

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

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

Iska
01-03-2019, 18:26
А вот это как раз должен был быть следующим вопросом) СТП и СТО и дальше хрен угадаешь что... »
Тогда никак. Чтобы что-то найти — нужно знать. что искать. Моё же замечание касалось буквы «Г». По-хорошему, нужно иметь весь возможный перечень. Мне лично не удалось найти даже по старым союзным ОСТам такой перечень, что уж про нынешние говорить…

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

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

blackeangel
01-03-2019, 18:47
Iska,

А в каком она формате?

.db MySQL

Чтобы что-то найти — нужно знать. что искать.

Ну первые абревиатуры есть и известны.

Iska
01-03-2019, 19:47
blackeangel, а внутри что? char, wchar, або какой-нибудь blob?




© OSzone.net 2001-2012