webForumDet fria alternativet

RegExp.Pattern

2 svar · 227 visningar · startad av McD

McDMedlem sedan mars 20002 520 inlägg
#1

Har en liten fråga gällande RegExp.Pattern och en liten förändring som jag skulle vilja göra..

Jag kan aboslut inte ett jota om Regexp har läst om och om igen på vides sida men förstår fortfarande inte :(

Allram här på wF har gjort ett litet "king" scirpt åt mig som tar ut lite information från loggar på min server... :bire

objRegExp.Pattern = "L (\d+/\d+/\d+) - (\d+:\d+:\d+): Ban: "".*?<.*?><(.*?)><.*?>.*?"" .*"

Denna lilla trevliga snutt tar ut följande från mina loggar...

L 12/10/2003 - 19:28:19: Ban: "Adminnamn<26><STEAM_ID><>" ban and kick "Spelarnamn<47><STEAM_ID<>" (minutes "60")

Allt är frid och fröjd.. MEN tyvärr så registreras bans även som "cmd:" i loggarna detta gör att även ett annat script tar ut bans...

objRegExp.Pattern = "L (\d+/\d+/\d+) - (\d+:\d+:\d+): Cmd: "".*?<.*?><(.*?)><.*?>.*?"" .*"

denna får ut följande...

L 12/13/2003 - 19:34:43: Cmd: "Adminnamn<47><STEAM_ID><>" ban "STEAM_ID" (minutes "666") (reason "no")

Alternativt så står namnet på spelaren som blir bannad istället för STEAM_ID...

Det jag skulle vilja är att:

Alla bans hamnar på samma ställe dvs "Cmd: regexpen" plockar ut allt förutom då ordet BAN finns med i textraden.... och att "Ban: regexpen" plockar ut alla rader som har order BAN i sig oavsett om det står Ban: eller bara ban

( finns ett krux med detta det är att det även finns say kommandon dvs någon kan skriva "Ban för ovårdat språk" och då vill jag INTE att den raden från loggfilen kommer i banlogfilen)

Det som jag sett när jag kontrollerar loggarna är att det rätta "ban-ordet" finns med om det skrivs ut på två olika sätt Ban: eller " ban " så ser det nämligen inte ut då någon skriver ett meddelande.

"Cmd: regexpen" ska inte ha med " ban "
"Ban: regexpen" ska ha med Ban: och " ban "

Förstår ni :q ;)

Engine^Medlem sedan dec. 20003 887 inlägg
#2

Du kan inte (vad jag förstår) göra en sådan koll med regexp. Men eftersom du har en så tydlig struktur är det ju enkelt om du plockar ut relevant data med regexp och sedan kontrollerar det du fått ut med VBScript.
Ett enkelt sätt för dig för att välja ut allt med Cmd, som inte innehåller ban, borde se ut såhär...

objRegExp.Pattern = "L \d{1,2}/\d{1,2}/\d{4} - \d{1,2}:\d{1,2}:\d{1,2}: Cmd:.*"

Set objMatches = objRegExp.Execute(strLog)

For Each objMatch In objMatches
  If Not InStr(objMatch.Value, "ban") Then
    Response.Write objMatch.Value
  End If
Next
Erik JuhlinMedlem sedan maj 200010 687 inlägg
#3

Äh, iKe! Jag kollar på det i veckan eller till helgen!

Allram här på wF = Erik Juhlin här på wF :)

132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)