VBA - Выделить из строки обозначение(я) ГОСТ/ОСТ/ТУ

Ответить
Аватара пользователя
blackeangel

VBA - Выделить из строки обозначение(я) ГОСТ/ОСТ/ТУ

Сообщение blackeangel »

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

Думал в сторону Mid , не знаю как сделать когда больше одного обозначения попадается.
Аватара пользователя
Iska

Re: VBA - Выделить из строки обозначение(я) ГОСТ/ОСТ/ТУ

Сообщение Iska »

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

Re: VBA - Выделить из строки обозначение(я) ГОСТ/ОСТ/ТУ

Сообщение blackeangel »

Цитата Iska:



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

Re: VBA - Выделить из строки обозначение(я) ГОСТ/ОСТ/ТУ

Сообщение Iska »

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

Re: VBA - Выделить из строки обозначение(я) ГОСТ/ОСТ/ТУ

Сообщение blackeangel »

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


Цитата:



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



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

Так же это касается инструкций.



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

Re: VBA - Выделить из строки обозначение(я) ГОСТ/ОСТ/ТУ

Сообщение Iska »

Цитата blackeangel:



А вот это как раз должен был быть следующим вопросом) СТП и СТО и дальше хрен угадаешь что...
VBA - Выделить из строки обозначение(я) ГОСТ/ОСТ/ТУ




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




Цитата blackeangel:



Суть в том что надо из составов технологических процессов выбрать всю документацию применяемую в предприятии....
VBA - Выделить из строки обозначение(я) ГОСТ/ОСТ/ТУ




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



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

Re: VBA - Выделить из строки обозначение(я) ГОСТ/ОСТ/ТУ

Сообщение blackeangel »

Iska,


Цитата:



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



.db MySQL


Цитата:



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



Ну первые абревиатуры есть и известны.
Аватара пользователя
Iska

Re: VBA - Выделить из строки обозначение(я) ГОСТ/ОСТ/ТУ

Сообщение Iska »

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

Вернуться в «Программирование и базы данных»