1

Тема: SA:MP: RegExMatch

Здравствуйте, пользователи форума. Я писал скрипт для игры SAMP и наткнулся на проблему:
Предположим мне дан текстовый  файл (в моем случае это chatlog.txt), в нем может быть как мало, так и много строк, это неизвестно.
Допустим в данном файле 4 строки:


[02:18:35] Nick_Name показал свой паспорт
[02:18:35] Имя: Nick_Name | В стране (лет): 4 | Пол: Мужской | Не женат | Проживание: Бездомный
[02:18:35] Работа: Таксист  |  Организация и подразделение: Нет
[02:18:35] Телефон: 1111  |  Уровень розыска: 0  |  Законопослушность: 0

Так вот, нужен код, который будет из всех строк в текстовом документе искать всегда по этой строке

[02:18:35] Телефон: 1111  |  Уровень розыска: 0  |  Законопослушность: 0

Вот мой код, который по идее должен был выделять "ефон: 3337  |  Уровень розыска: 0", но он не выделяет ничего потому, что читает почему-то первую строку, в которой нет этих данных.


Alt & 8::
file = %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
fileread, var, %file%
if var contains ] Телефон:
{
RegExMatch(var,"\Q] Тел \E(.*)\Q| Зак\E", out)
MsgBox %out1%
}

Если написать

RegExMatch(var,"(.*)", out)

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

2

Re: SA:MP: RegExMatch

RegExMatch(var, "\QТелефон: \E(.*)  \Q|  Уровень\E", out

)

3

Re: SA:MP: RegExMatch

Чатлог нужно читать снизу вверх, ибо если ты вызываешь информацию эту два или больше раз за сессию, соответственно скрипт будет находить только первый телефон и уровень, а все остальные он забудет.


log := {str:"",find:0,num:0}    ,    log.str := []

Loop, read, %path_log%
    log.str.Insert(A_LoopReadLine)    ,log.num := A_Index

loop 10	
	if RegExMatch(     log.str[log.num + 1 - A_Index]
        ,"\[(.*)\]  Тел(.*): (.*)  |  Уровень розыска: (.*)  |  Законопослушность: (.*)"
        , end_s) and (log.find:=log.num + 1 - A_Index)
            break
	var := "" . end_s2 . ":" . end_s3 . " | Уровень розыска: " . end_s4 . ""
	msgbox, % var

4

Re: SA:MP: RegExMatch

valeron_121 пишет:
RegExMatch(var, "\QТелефон: \E(.*)  \Q|  Уровень\E", out

)

Я не понимаю, ты мне скинул код такой же, который и был у меня, но твой работает, а мой нет. ?????????????

5

Re: SA:MP: RegExMatch

cathippo2012 пишет:
valeron_121 пишет:
RegExMatch(var, "\QТелефон: \E(.*)  \Q|  Уровень\E", out

)

Я не понимаю, ты мне скинул код такой же, который и был у меня, но твой работает, а мой нет. ?????????????

можешь скинуть тот код который вышел у тебя в итоге