|
[LÖSAS]: RegEx: Matchande Null?
Jag använder webbadressen Regex inslag i Squid för att webbplatser via en lista med regex strängar för att matcha tillåtna domäner. Den regex faktiskt kopieras från vår tidigare fullmaktshavare lösning och det verkade "bara arbete". Men vi har nyligen upptäckt att vissa domäner (troligen på grund av virtuella värdar eller mottagande rubrikinformation konfiguration beroende på om det är Apache eller IIS respektive) misslyckas om de används utan prefixet www i webbadressen. Nedan är ett exempel på vad som ibland fungerar:
Kod:
http://.*\.microsoft\.com/.*
Den ".* \." innan "microsoft \. com del bör innebära, valfritt antal tecken (noll eller flera) följt av en". " Jag ser felet i fråga om "\". del av regex och planerar att åtgärda det. Men jag har inte kunnat hitta ett sätt att matcha både "www.microsoft.com" och "microsoft.com". Här är vad jag trodde skulle fungera:
Kod:
http://[!.*|.*\.]microsoft\.com/.*
Jag erkänner att bli riktigt dålig med regex, så ska du inte vara för hård mot mig snälla. Jag har bara aldrig haft möjlighet att "få det" 100%. Det behöver inte sägas att dessa fungerar inte för mig alls. Det stämmer inte "microsoft.com" eller "www.microsoft.com". Jag har försökt några begränsade tester med "grep" för att försöka finna en lämplig lösning. Men vad är det som jag verkligen försöker att matcha? Vid första jag anta jag ville ha ett blanksteg karaktär, men jag är inte ute efter "microsoft.com". Då tänkte jag: ett null? Men det verkar vara omöjligt att matcha eftersom det är egentligen inte en match alls, eftersom det inte finns några tecken där. Jag är säker på att någon som är expert på regex skulle titta på detta och ge något vansinnigt enkelt. Jag verkligen inte vill göra detta:
Kod:
http://[.*\.microsoft\.com/.*|microsoft\.com/.*]
eller ännu värre, detta:
Kod:
http://.*\.microsoft\.com/.*
http://microsoft\.com/.*
Några förslag? Tack på förhand ...
Senast redigerad av Deckard, 06-05-2008 vid 11:57.. Orsak: Mottagna en lösning på problemet.
|