[asp/regExp] Probleem met matchen

Pagina: 1
Acties:

  • CrashOne
  • Registratie: Juli 2000
  • Niet online

CrashOne

oOoOoOoOoOoOoOoOoOo

Topicstarter
Ik heb een probleem met het matchen van strings uit mijn log file.

Asp:
code:
1
2
3
4
5
6
7
8
9
10
Set expr = New RegExp

expr.Global = false
expr.IgnoreCase = True

expr.Pattern =  "\\[(.*?)\] \\[(.*?)\] \\[(.*?)\] \\[(.*?)\] \\[(.*?)\] \\[(.*?)\]"

data = fl.ReadLine 'Data uit log file
data = expr.Replace(data,"<$1><$2><$3><$4><$5><$6>")
response.write(data)


Data ziet er zo uit:
code:
1
[2/16/2004] [8:03:37 AM] [99.99.99.99] [direct] [/elise/default.asp?action=welcome] [Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2)]


output (wordt straks natuurlijk anders gevormd, maar eerst even dit voor elkaar krijgen):
code:
1
<2/16/2004><8:03:37 AM><99.99.99.99>


Er mist dus een gedeelte:
code:
1
[direct] [/elise/default.asp?action=welcome] [Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2)]


Hoe kan ik dat gedeelte wel matchen? Heb al verschillende geprobeert (ik dacht dat ".*?" alle zou moeten matchen) maar ik kom er gewoon niet uit.

voel me echt een n00b, heb altijd problemen met die klote regular expressions, dacht dat deze wel toen doen zou zijn voor mij, maar goed....

Maar goed, kan iemand mij de goede kant op helpen?

BVD!

Huur mij in als freelance SEO consultant!


  • CrashOne
  • Registratie: Juli 2000
  • Niet online

CrashOne

oOoOoOoOoOoOoOoOoOo

Topicstarter
[kickje]
Iemand?
[/kickje]

Huur mij in als freelance SEO consultant!


  • Skaah
  • Registratie: Juni 2001
  • Niet online
Je RegExp matched bij mij gewoon, met PowerGREP. Deze is iets stricter, misschien dat ie beter werkt? Het is trouwens niet nodig om ] te escapen.
code:
1
expr.Pattern =  "^\\[(.*?)] \\[(.*?)] \\[(.*?)] \\[(.*?)] \\[(.*?)] \\[(.*?)]$"

Pak je dit probleem niet verkeerd aan? Kun je niet splitten op "] [" en dan bij het eerste en laatste element de [ resp ] weghalen? Heb je ook een mooie array.
(Sorry, PHP, pseudo:)
PHP:
1
2
3
$arr = explode('] [',$string);
$arr[0] = substr(1,len($arr[0]),$arr[0]);
$arr[count($arr)] = substr(0,len($arr[0])-1,$arr[count($arr)]);

[ Voor 43% gewijzigd door Skaah op 22-02-2004 12:36 ]


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Waarschijnlijk staat er stiekem ergens een tabje in plaats van een spatie. Probeer het, ipv de spatie in je regexp te gebruiken, eens met een \s*

code:
1
\\[(.*?)]\s*\\[etcetera

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz