Question

Dans mon programme C # J'ai écrit une fonction de recherche Google, qui fonctionne en allant chercher la source de chaque page et obtenir les URL via regex.

Mon réelle expression rationnelle est:

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

Cela fonctionne bien pour le moment, mais je reçois par exemple les URL comme http://www.example.com/forums/arcade.php?efdf=332

Je veux juste obtenir dans ce cas, l'URL sans ?efdf=332 à la fin.

Alors, comment dois-je changer le regex?

Était-ce utile?

La solution

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

fait la même chose que votre regex (je l'ai enlevé beaucoup de cochonneries inutiles), mais arrête un lien correspondant à une avant ?.

En C #:

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

Cela dit, je ne suis pas sûr que ce soit une bonne façon d'URL correspondant (quid https, ftp, mailto etc.?)

Autres conseils

Vous pouvez utiliser la classe Uri pour accéder aux différentes parties de l'URL et supprimez la chaîne de requête à partir de la fin ou concaténer les pièces que vous voulez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top