|
[LØST]: RegEx: Matching Null?
Jeg bruger webadressen Regex element i Squid for at tillade websteder via en liste over regex strings at matche tilladt domæner. Det regex faktisk var kopieret fra vores tidligere proxy løsning, og det syntes at "lige arbejde". Men vi har for nylig opdaget, at nogle domæner (sandsynligvis på grund af virtuelle vært eller vært header konfiguration afhængigt af om det er Apache eller IIS henholdsvis) mislykkes, hvis de anvendes uden www-præfikset i webadressen. Nedenfor er et eksempel på, hvad der undertiden værker:
Code:
http://.*\.microsoft\.com/.*
Den ".* \ '. før »Microsoft \. com 'portion bør betyde, et hvilket som helst antal tegn (nul eller flere) efterfulgt af et". " Jeg kan se fejlen i form af '\'. del af regex og planen om at fastsætte dette. Men jeg har været i stand til at finde en måde at matche både "www.microsoft.com" og "microsoft.com". Her er, hvad jeg troede ville arbejde:
Code:
http://[!.*|.*\.]microsoft\.com/.*
Jeg indrømmer, at jeg er virkelig dårlig med regex, så du skal ikke blive alt for hårdt på mig venligst. Jeg har bare aldrig været i stand til at "få det" 100%. Det er overflødigt at sige, at ovenstående ikke virker for mig overhovedet. Det passer hverken "microsoft.com" eller "www.microsoft.com". Jeg har prøvet nogle begrænset test med 'grep' for at forsøge at finde en tilfredsstillende løsning. Men, hvad er det, at jeg virkelig forsøger at matche? Ved første, jeg antages jeg ønskede en whitespace karakter, men jeg er ikke på udkig efter "microsoft.com". Så tænkte jeg, en null? Men det synes at være umuligt at svare, da det er egentlig ikke en kamp på alle, da der ingen tegn dér. Jeg er sikker på, at en person, der er ekspert på regex ville se på dette og give noget insanely enkel. Jeg forstår virkelig ikke ønsker at gøre dette:
Code:
http://[.*\.microsoft\.com/.*|microsoft\.com/.*]
eller værre, er dette:
Code:
http://.*\.microsoft\.com/.*
http://microsoft\.com/.*
Any suggestions? Thanks in advance ...
Sidst redigeret af deckard; 06-05-2008 på 11:57 AM.. Årsag: modtaget en løsning på problemet.
|