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
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.
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 = \
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
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
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
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 )
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.
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
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.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden