Eric.Seopa Ответов: 1

Vbscript ищет слово в txt файле и возвращает только это слово


Хороший день. Я новичок в vbscripting и нуждаюсь в некоторой помощи в правильном написании моего кода. У меня есть код, который ищет слово в текстовом файле с цифрой " 89 " и должен возвращать только полное слово. Мой код в настоящее время возвращает всю строку/предложение.

код >>>


Const ForReading = 1

Set objRegEx = CreateObject("VBScript. RegExp")
objRegEx. Pattern = " 89"

Set objFSO = CreateObject ("Scripting.Filesystemobject, с")

Set objFile = objFSO. OpenTextFile("C:\Temp\test.txt", ForReading)


Делайте это до objFile.AtEndOfStream

strSearchString = objFile. ReadLine


Установите colMatches = objRegEx.Выполнить(strSearchString)

Если колматч.Тогда считайте > 0

Для каждого strMatch в colMatches

Объект WScript.Эхо strSearchString

Следующий

Конец, Если

Петля


objFile.Закрывать


<< & lt; код


test.txt Файл >>


Готовая информация для интерфейса сотовой связи:
-------------------------------------
Состояние: готов к включению питания и регистрации
Аварийный режим: Выкл.
Идентификатор Абонента : 655020007620408
SIM ICC Id : 89270200150007090909
Количество телефонных номеров : 0

Что я уже пробовал:

expected output > 89270200150007090909

currently output > SIM ICC Id : 89270200150007090909

1 Ответов

Рейтинг:
1

Jochen Arndt

Это не только проблема VbScript, но и проблема регулярных выражений.

Первая ошибка-это ошибка в вашем скрипте:

For Each strMatch in colMatches
    Wscript.Echo strSearchString
Next
Вы печатаете strSearchString (строка, прочитанная из файла) вместо strMatch (каждый матч).

Чтобы получить только совпадающие части, заключите их в круглые скобки. Но это требует включения следующих символов до тех пор, пока не появится символ разделения слов. В вашем случае вы можете просто сопоставить "89", за которым следует одна или несколько цифр:
objRegEx.Pattern = "(89\d+)"
Если вы знаете, что общая длина всегда равна 20, вы также можете указать, что должно быть 18 следующих цифр:
objRegEx.Pattern = "(89\d{18})"

Смотреть также Синтаксис Регулярных Выражений (Скрипты)[^].