Pergunta

No meu programa C#, escrevi uma função de pesquisa do Google, que funciona buscando a fonte de cada página e obtendo os URLs via Regex.

Meu regex real é:

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

Isso funciona bem no momento, mas eu recebo, por exemplo, URLs como http://www.example.com/forums/arcade.php?efdf=332

Eu só quero chegar neste caso o URL sem o ?efdf=332 no final.

Então, como devo mudar o regex?

Foi útil?

Solução

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

Faz o mesmo que o seu regex (eu removi muito de Cruft desnecessário), mas para de combinar um link antes de um ?.

Em C#:

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

Dito isto, não tenho certeza se essa é uma maneira tão boa de combinar URLs (que tal https, ftp, mailto etc.?)

Outras dicas

Você pode usar o Uri Classe para acessar várias partes do URL e remover a sequência de consultas do final ou concatenar as peças desejadas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top