2014-05-02 4 views
-4

Comment modifier l'expression régulière suivante:Expression régulière pour trouver URL String Java

String URLpattern = "((https?|ftp|gopher|telnet|file|Unsure|http):((//)|(\\\\))+[\\w\\d:#@%/;$()~_?\\+-=\\\\\\.&]*)" 

avec celui qui prend en compte toutes les formes d'URL suivantes?

http://www.website.com 
https://www.website.com 
www.website.com 
website.com 
http://website.com 
https://website.com 

EDIT: Il y a un tas de solutions déjà proposées au problème. Je peux énumérer certains d'entre eux:

Cependant, bien que j'ai essayé tous eux aussi, aucun d'eux ne propose une explication du comment et pourquoi l'expression fonctionne. Ainsi, chaque fois qu'il y a un dysfonctionnement (et pour moi, un dysfonctionnement se produisait dans les URL sous la forme website.com et http://website.com), il devient difficile pour les débutants (comme moi;)) d'appliquer toute modification ou de comprendre ce qui se passe quand il y a un échec. Une solution bien expliquée est toujours mieux qu'une solution faite par d'autres et non réplicables dans la prochaine fois =)

+0

Pourquoi ai-je reçu autant de downvotes? Je veux dire: j'ai cherché d'autres questions liées à ce sujet mais aucun d'entre eux n'offre une solution qui fonctionne ... Si vous pensez que ce n'est pas une bonne question, vous devriez exiger de le fermer :) – Eleanore

+0

Nous voulons voir l'effort. Si vous avez fait des recherches, montrez-le et expliquez pourquoi cela ne vous aide pas. –

Répondre

3

Compte tenu de votre liste de sites Web, l'expression rationnelle suivante fera l'affaire:

(https?://)?(www\.)?\w+\.com

Demo

+0

Je sais le sentiment que vous obtenez quand les upvotes ne comptent pas après avoir atteint 20 upvotes lol –

+0

@AmitJoki, Ouais .... – sshashank124

+0

@DavidWallace, Merci, Réponse corrigée. Le/g peut avoir marqué par erreur quand je copiais. De regex101.com – sshashank124

0

Essayez celui-ci, il fonctionne bien.TESTED avec toutes vos URLs!

private static final String URL_PATTERN = "(@)?(href=')?(HREF=')?(HREF=\")?(href=\")?(http://)?(https://)?" + 
     "[a-zA-Z_0-9\\-]+(\\.\\w[a-zA-Z_0-9\\-]+)+(/[#&\\n\\-=?\\+\\%/\\.\\w]+)?"; 

private Pattern urlPattern =Pattern.compile(URL_PATTERN); 

public boolean isURL(String url) 
{ 
    boolean mat = urlPattern.matcher(url.trim().replace(" ","")).matches(); 
    return urlPattern.matcher(url.replace(" ","")).matches(); 
} 
Questions connexes