Amokloipher Geschrieben 29. November 2010 Geschrieben 29. November 2010 Hi Leute! Ich habe grade die Aufgabe jCrawler zu konfigurieren und scheitere am entsprechenden regex, der die zu-crawlenden url-patterns beschreibt. Momentan sieht der regex etwa so aus: .*?some\.url\.pattern\.de\/blub\/.* Das soweit noch einfach. Das Ziel ist es jetzt, alle Seiten mit print-layout auszuschliessen. Diese erkennt man daran, dass irgendwo weiter hinten in der URL das Pattern "/print" auftaucht. Ich habe schon n bisschen gesucht und diesen Beitrag gefunden: RegexAdvice - Using a regular expression to exclude a word/string Im Versuch das umzusetzen habe ich dann folgendes gebastelt: .*?some\.url\.pattern\.de\/blub\/.*?^(?!.*/print.*).*$ Das hat allerdings zur Folge, dass der Crawler anscheinend garkeine URLs mehr matcht. Kann mir wer weiterhelfen und erklären, was ich falsch gemacht habe? Dank und Gruß Amok Zitieren
Amokloipher Geschrieben 29. November 2010 Autor Geschrieben 29. November 2010 Ah, btw Ich war grade auffm Örtchen, wo einem immer die besten Ideen kommen und da is mir aufgefallen, dass ich den Slash nicht escaped hatte :upps Das hat mein Problem nur leider nicht gelöst. Zitieren
Der_Lampe Geschrieben 6. Dezember 2010 Geschrieben 6. Dezember 2010 hast du auch berücksichtigt, dass regex den \ auch ge-escaped haben will? \ ist für RegExp ein Steuerzeichen, muss also mit \ escaped werden --> \\ \ ist für Java aber auch ein Steuerzeichen also ergibt \\ -> \ Das wiederrum führt uns zu \\\\ + Java = \\ + RegExp = \ Zitieren
Amokloipher Geschrieben 6. Dezember 2010 Autor Geschrieben 6. Dezember 2010 Nicht aktiv berücksichtigt würde ich sagen, da meine URL-Patterns sowieso keine Backslashes enthalten Zitieren
Der_Lampe Geschrieben 6. Dezember 2010 Geschrieben 6. Dezember 2010 oh hab da wohl aufgrund der Müdigkeit den Slash mit dem Backslash verwechselt :schlaf: :upps aber du solltest vllt mal in Erfahrung bringen ob es mit dem normalen Slash ein ähnliches Problem gibt Zitieren
Amokloipher Geschrieben 6. Dezember 2010 Autor Geschrieben 6. Dezember 2010 Gibt es, deswegen sind sie ja in meinem Beispiel mit Bachslashes escaped Hier, n Kaffe für dich *rüberschieb* :butler Zitieren
Der_Lampe Geschrieben 6. Dezember 2010 Geschrieben 6. Dezember 2010 Oh sehr aufmerksam, vielen Dank :uli tut mir Leid aber ich kann dir da leider nicht mehr wirklich weiterhelfen, sehe in deinem Pattern keinen Fehler(naja habe da auch recht wenig Erfahrung ) Zitieren
etreu Geschrieben 6. Dezember 2010 Geschrieben 6. Dezember 2010 .*?some\.url\.pattern\.de\/blub\/.*?^(?!.*/print.*).*$ Probier statt dessen mal: ^.*?some\.url\.pattern\.de\/blub\/(?!.*/print.*).+$ Ich habe unter Regular Expression Library ein bischen damit rumprobiert und es sieht soweit ganz gut aus. Zitieren
Amokloipher Geschrieben 9. Dezember 2010 Autor Geschrieben 9. Dezember 2010 Dank dir, etreu! Das hat funktioniert. Ich raff nur ehrlich gesagt nicht so ganz warum. Würdest du dir noch kurz die Zeit nehmen, mir das zu erklären, bitte? Vielen Dank nochmal, Amok Zitieren
etreu Geschrieben 9. Dezember 2010 Geschrieben 9. Dezember 2010 Das "^" Zeichen steht für den Beginn der Zeichenkette, wenn er am Anfang steht oder für die Negation einer Klasse (z.B. [^aA] - keine 'a' oder 'A'). Der negative Lookahead war okay. Treffer wurden gefunden weil die Bedingung mit Lookahead auch noch gestimmt hat - es noch nach dem 'print' einen String der kein 'print' ist. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.