1 (изменено: Nazob, 2016-02-11 20:56:28)

Тема: Найти значение из функции через RegExMatch


    !1::
tipochatlog = 
(
[10:03:04]  [R] Мл.Сержант  Samoed_Don:  10-14 Pavel Egorov и Andre Lincoln в КПЗ ЛСПД
[10:03:16]  SFPD Лейтенант Ivan_Pupkin: 10-14 Pavel Egorov - СИЗО LSPD!
[10:10:12]  Объявление: Куплю чай. Прислал: Alberto_Ricki. Тел: 171317
[10:10:12]         Отредактировал сотрудник SF News: Sigizmunz_Batsifalof
)
obr:=Samoed_Don
RegExMatch(tipochatlog, "?", nashlo)      
MsgBox, % nashlo1
return

Есть переменная (obr), её значение всегда меняется. Как её "запихнуть" в шаблон RegExMatch'a?

2 (изменено: Alectric, 2016-02-11 15:16:23)

Re: Найти значение из функции через RegExMatch

Это не функция, это переменная.

obr:="Samoed_Don" ; или obr=Samoed_Don
RegExMatch(tipochatlog, obr, nashlo)      
Win 10 x64
AHK v1.1.33.02
                       Справка тебе в помощь.

3 (изменено: Nazob, 2016-02-22 20:58:35)

Re: Найти значение из функции через RegExMatch

Не помогло. Выдаёт только саму переменную, а надо всю строку.

4 (изменено: yalanne, 2016-02-23 23:12:35)

Re: Найти значение из функции через RegExMatch

В patern указывается RegEx шаблон строки без времени в квадратных скобках.
С помощью loop'а находит последний подходящий результат.

tipochatlog = 
(
[10:03:04]  [R] Мл.Сержант  Samoed_Don:  10-14 Pavel Egorov и Andre Lincoln в КПЗ ЛСПД
[10:03:16]  SFPD Лейтенант Ivan_Pupkin: 10-14 Pavel Egorov - СИЗО LSPD!
[10:10:12]  Объявление: Куплю чай. Прислал: Alberto_Ricki. Тел: 171317
[10:10:12]         Отредактировал сотрудник SF News: Sigizmunz_Batsifalof
)

patern := "\[R\] .+ \w+_\w+:\s+\d+-\d+ .+"

loop
  found := finded
  , pos := RegExMatch(tipochatlog,"UO)(\[(?:\d\d:{0,1})+]\s+(" patern "))(?:`n|$)"
  , finded,(A_Index=1)?(pos:=1):pos) + StrLen(finded.1)
Until !finded.1

msgbox % found.2

Пользовательский шаблон(то что в переменной patern) Можно прочесть так:

\[R\] .+ \w+_\w+:\s+\d+-\d+ .+

Начало строки начинается с [R]. пробел. Затем указываем что идет неизвестное количество символов и даже пробелы(это звание, так как как оно может указываться либо одним либо нескольким словами), после звания должны быть еще два слова на латинице(это имя фамилия). Дальше указываем что идет неизвестное количество пробельных символов. Затем цифры через тире формата 00-00 и пробел.  Дальше может быть любой текст.

5 (изменено: Nazob, 2016-02-25 15:50:54)

Re: Найти значение из функции через RegExMatch

Распишу немного по другому.

F1::
chatlog =
(
[10:31:03] [311] Evgenii_Simak  ранг: 2
[10:31:03] [315] Nikita_Volya  ранг: 5
[10:31:03] [333] Niko_Anjello  ранг: 4
)
rang:="Evgenii_Simak"
Regexmatch(chatlog, "\[.*\] \[.*\] %rang% ранг:.*", nashlo)

Зная шаблон строки, и её часть(но в переменной) надо найти эту строку.
То есть, после этого RegExMatch`a на выходе мне надо иметь эту строку:
[10:31:03] [311] Evgenii_Simak  ранг: 2
Только вот как поместить переменную в шаблон?
Знаю как никнейм так и ID(0-999), может по цифрам легче будет

6

Re: Найти значение из функции через RegExMatch

chatlog =
(
[10:31:03] [311] Evgenii_Simak  ранг: 2
[10:31:03] [315] Nikita_Volya  ранг: 5
[10:31:03] [333] Niko_Anjello  ранг: 4
)
rang:="Evgenii_Simak"
Regexmatch(chatlog, "[^\n\r]*" rang "[^\n\r]*", nashlo)
msgbox % nashlo