|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Регулярные выражения [Парсинг]
Нужно из таких строк:
Код:
23.08 | 17:51 | Nick: Petia_Voloshuk | Dialog[2]: Don_Pedro | Server: 5.254.105.203:7777 Diamond Role Play | Amber | LVL: 00 | User-IP: 172.68.10.56 | Money: 0 23.08 | 20:1 | Nick: Eva_Prieto | Dialog[1]: vsirfyjheirf | Server: 5.254.123.6:7777 Diamond Role Play | Sapphire | LVL: 00 | User-IP: 172.68.10.41 | Money: 0 23.08 | 20:1 | Nick: Eva_Prieto | Dialog[1]: vsirfyjheirf | Server: 5.254.123.6:7777 Diamond Role Play | Sapphire | LVL: 00 | User-IP: 172.68.10.41 | Money: 0 23.08 | 20:59 | Nick: Egor_Ucenko | Dialog[1]: 77mumamo | Server: 5.254.123.3:7777 Diamond Role Play | Radiant | LVL: 00 | User-IP: 172.68.10.45 | Money: 0 23.08 | 20:59 | Nick: Egor_Ucenko | Dialog[2]: 1827 | Server: 5.254.123.3:7777 Diamond Role Play | Radiant | LVL: 00 | User-IP: 172.68.10.45 | Money: 0 23.08 | 19:8 | Nick: Daiki_Fukuda | Dialog[1]: P2KH5K | Server: 5.254.105.204:7777 Diamond Role Play | Quartz | LVL: 00 | User-IP: 172.68.10.57 | Money: 0 23.08 | 19:10 | Nick: Tony_Newman | Dialog[1]: gsh123456789 | Server: 5.254.105.203:7777 Diamond Role Play | Amber | LVL: 00 | User-IP: 172.68.10.35 | Money: 0 23.08 | 19:10 | Nick: Tony_Newman | Dialog[2]: FromOldGetto | Server: 5.254.105.203:7777 Diamond Role Play | Amber | LVL: 00 | User-IP: 172.68.10.35 | Money: 0 23.08 | 21:13 | Nick: Eva_Prieto | Dialog[1]: vsirfyjheirf | Server: 5.254.123.6:7777 Diamond Role Play | Sapphire | LVL: 00 | User-IP: 172.68.10.41 | Money: 0 23.08 | 21:13 | Nick: Eva_Prieto | Dialog[1]: vsirfyjheirf | Server: 5.254.123.6:7777 Diamond Role Play | Sapphire | LVL: 00 | User-IP: 172.68.10.41 | Money: 0 23.08 | 19:15 | Nick: Tony_Newman | Dialog[1]: gsh123456789 | Server: 5.254.105.203:7777 Diamond Role Play | Amber | LVL: 00 | User-IP: 172.68.10.35 | Money: 0 23.08 | 19:15 | Nick: Tony_Newman | Dialog[2]: FromOldGetto | Server: 5.254.105.203:7777 Diamond Role Play | Amber | LVL: 00 | User-IP: 172.68.10.35 | Money: 0 23.08 | 21:22 | Nick: Eva_Prieto | Dialog[297]: 590000 | Server: 5.254.123.6:7777 Diamond Role Play | Sapphire | LVL: 00 | User-IP: 172.68.10.41 | Money: 694848 23.08 | 21:22 | Nick: Eva_Prieto | Dialog[297]: 590000 | Server: 5.254.123.6:7777 Diamond Role Play | Sapphire | LVL: 00 | User-IP: 172.68.10.41 | Money: 694848 23.08 | 19:27 | Nick: Tony_Newman | Dialog[1]: gsh123456789 | Server: 5.254.105.203:7777 Diamond Role Play | Amber | LVL: 00 | User-IP: 172.68.10.35 | Money: 0 23.08 | 19:27 | Nick: Tony_Newman | Dialog[2]: FromOldGetto | Server: 5.254.105.203:7777 Diamond Role Play | Amber | LVL: 00 | User-IP: 172.68.10.35 | Money: 0 23.08 | 19:35 | Nick: Ilja_Kiriloff | Dialog[1]: qwerty3131 | Server: 5.254.123.2:7777 Diamond Role Play | Emerald | LVL: 00 | User-IP: 172.68.11.57 | Money: 0 Пробую таким методом: Код:
procedure TMyThread.Execute; var rege:tregexpr; s,p:string; d,e: Integer; begin s:=data.Text; rege:=tregexpr.Create; rege.Expression:='Nick: (.*?) | Dialog[1]: (.*?) | Server:'; if rege.Exec(s) then repeat Form4.sMemo1.Lines.Add(rege.Match[0]); until not rege.ExecNext; end; Код:
Nick: Egor_Ucenko Server: Nick: Daiki_Fukuda Server: Nick: Tony_Newman Server: Nick: Tony_Newman Server: Nick: Eva_Prieto Server: Nick: Eva_Prieto Server: Nick: Tony_Newman Server: Nick: Tony_Newman Server: Nick: Eva_Prieto Server: Nick: Eva_Prieto Server: Nick: Tony_Newman Server: Nick: Tony_Newman Server: Nick: Ilja_Kiriloff Server: |
#2
|
||||
|
||||
А что, это приципиально чтоб через РВ парсить, может "обычный" разбор строки подойдет?
Код:
var s, v:string; i: integer; sl: TStrings; flg1, flg2: boolean; begin flg1:= false; sl:= TStringList.Create; sl.Clear; v:= ''; s:= Memo1.Text; for i := 1 to Length(s)-1 do begin if (flg1) and (flg2) and (s[i]+s[i+1] = ' |') then begin if pos('Dialog[1]:', v) > 0 then sl.Add(v); v:= ''; flg1:= false; flg2:= false; end; if (flg1) and (s[i] = '|') then flg2:= true; if (flg1) and (s[i] <> '|') and (s[i] <> #13) then v:= v + s[i]; if s[i]+s[i+1]+s[i+2]+s[i+3]+s[i+4]+s[i+5] = ' Nick:' then flg1:= true; end; memo2.Lines.Assign(sl); sl.Free; end; Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |