Veröffentlicht 29. November 201014 j 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
29. November 201014 j 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.
6. Dezember 201014 j 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 = \
6. Dezember 201014 j Nicht aktiv berücksichtigt würde ich sagen, da meine URL-Patterns sowieso keine Backslashes enthalten
6. Dezember 201014 j 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
6. Dezember 201014 j Gibt es, deswegen sind sie ja in meinem Beispiel mit Bachslashes escaped Hier, n Kaffe für dich *rüberschieb* :butler
6. Dezember 201014 j 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 )
6. Dezember 201014 j .*?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.
9. Dezember 201014 j 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
9. Dezember 201014 j 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.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.