Что нового

В текстовом файле найти слова в строках с разделителями

darow

Новичок
Сообщения
50
Репутация
1
Всем здравствуйте, имеется задачка такого плана:
есть скрипт:
Код:
#include <IE.au3>
Global $filename = @ScriptDir & "\find.txt"
$oIE = _IECreate("http://betcityru.com/live/line.php")

$sMyString = FileRead($filename); читаем весь текст из файла
$oLinks = _IELinkGetCollection($oIE)
For $oLink In $oLinks
    $sLinkText = _IEPropertyGet($oLink, "innerText")
    If StringInStr($sLinkText, $sMyString) Then
        _IEAction($oLink, "click")
        ExitLoop
    EndIf
Next

и есть файл find.txt . В этом файле всего одна фамилия написана "Сидоров"
скрипт берет эту фамилию с файла и ищет на странице ее и кликает. Тут все просто в другой ветке это все разобрали.
Но вот задачка переносится в реальные условия и текстовый файл find2.txt имеет фактически другую структуру:

21:03:45|Фамилия : Иванов Л. - Фридсам А.
21:07:05|Фамилия : Петров К. - Рыбарикова М.
21:14:56|Фамилия : Сидоров Л. - Фридсам А.-Л.

и мне теперь надо искать "Сидоров" в последней строке (именно в последней, нижней строке) и фамилия находится от начала строки время, разделитель, слово "Фамилия", двоеточие и пробел и только после этого пошла нужная фамилия, хотя бы 5 символов первых искать от фамилии ...
Подскажите, какой лучше метод применить?
примеры текстовичков вкладываю
 

Вложения

  • find.txt
    6 байт · Просмотры: 4
  • find2.txt
    138 байт · Просмотры: 3

beve

Осваивающий
Сообщения
104
Репутация
31
Код:
Global $filename = @ScriptDir & "\find2.txt"
$hFile = FileOpen($filename, 0)
If $hFile = -1 Then
    MsgBox(4096, "Ошибка", "Невозможно открыть данный файл")
    Exit
EndIf

$sLine = FileReadLine($hFile, -1)
If @error = -1 Then 
    MsgBox(4096, "Ошибка", "Не вышло прочитать данные")
    Exit
EndIf
FileClose($hFile)
$sMyString=StringRegExpReplace($sLine, ".*?Фамилия : (.*?) .*", "\1", 0)

Если вдруг есть вероятность, что последняя строка в файле окажется пустой, то вам нужно будет эту строку удалить перед обработкой, это тоже можно сделать с помощью autoit конечно.
 
Автор
D

darow

Новичок
Сообщения
50
Репутация
1
сделал согласно ваших советов окончательный скрипт:
Код:
#include <IE.au3>
Global $filename = @ScriptDir & "\find2.txt"
$hFile = FileOpen($filename, 0)
If $hFile = -1 Then
    MsgBox(4096, "Ошибка", "Невозможно открыть данный файл")
    Exit
EndIf
$oIE = _IECreate("http://betcityru.com/live/line.php")

$sLine = FileReadLine($hFile, -1)
If @error = -1 Then
    MsgBox(4096, "Ошибка", "Не вышло прочитать данные")
    Exit
EndIf
FileClose($hFile)
$sMyString=StringRegExpReplace($sLine, ".*?Фамилия : (.*?) .*", "\1", 0)
$oLinks = _IELinkGetCollection($oIE)
For $oLink In $oLinks
    $sLinkText = _IEPropertyGet($oLink, "innerText")
    If StringInStr($sLinkText, $sMyString) Then
        _IEAction($oLink, "click")
        ExitLoop
    EndIf
Next

и все получилось!!! спасибо большое!


Добавлено:
Сообщение автоматически объединено:

и кстати у меня последняя строка пустая в файле, просто абзац, то никаких проблем открывает так же

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



Добавлено:
Сообщение автоматически объединено:

оттестил все хорошо скрипт работает... вопрос решен!
 
Верх