Frage

In meinem C # Programm schrieb ich eine Google-Suche-Funktion, die durch Abrufen der Quelle von jeder Seite funktioniert und bekommen die URLs über regex.

Meine eigentliche Regex ist:

(?:(?:(?:http)://)(?:w{3}\\.)?(?:[a-zA-Z0-9/;\\?&=:\\-_\\$\\+!\\*'\\(\\|\\\\~\\[\\]#%\\.])+)

Das funktioniert gut im Moment, aber ich habe zum Beispiel URLs wie http://www.example.com/forums/arcade.php?efdf=332

Ich will nur ohne die ?efdf=332 in diesem Fall die URL erhalten am Ende.

Wie soll ich die Regex ändern?

War es hilfreich?

Lösung

http://(?:www\.)?[a-zA-Z0-9/;&=:_$+!*'()|~\[\]#%.\\-]+

macht das gleiche wie Ihre regex (ich eine Menge unnötiger cruft entfernt haben), sondern hält einen Link vor einem ? entsprechen.

In C #:

Regex regexObj = new Regex(@"http://(?:www\.)?[a-zA-Z0-9/;&=:_$+!*'()|~\[\]#%.\\-]+")

Das heißt, ich bin nicht sicher, das ist so eine gute Möglichkeit der passenden URLs (was https, ftp, mailto etc.?)

Andere Tipps

Sie können über den Uri Klasse den Zugriff auf verschiedene Teile die URL und entweder den Abfrage-String aus dem Ende entfernen, oder die Teile verketten Sie wollen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top