2010-11-27 8 views
0

Est-il possible de diviser les liens suivants. Je peux sélectionner un lien mais pas quand ils sont collés l'un à côté de l'autre.regex trouver les liens

Thanx

Exemple: (je veux choisir ces 3 liens séparément) http://www.fileserve.com/file/7kXswvM/part1.rarhttp://www.fileserve.com/file/r4F3Gmh/part2.rarhttp://www.fileserve.com/file/r4F3Gmh/part3.rar

+1

quel environnement souhaitez-vous? C#, perl, un éditeur de texte? –

+1

Voilà pour le conseil de la balise 'regex' d'utiliser un langage ou une balise d'outil si vous voulez limiter les réponses à un seul langage ou outil particulier. Ne l'ai-je pas assez exprimé, ou est-ce que les néos ne regardent jamais l'Extrait d'une étiquette en particulier? Peut-être que SO devrait être changé pour montrer une affiche d'un extrait d'étiquette quand les gens incluent une étiquette? – tchrist

+0

@tchrist: [Les gens ne lisent pas.] (Http://www.joelonsoftware.com/uibook/chapters/fog0000000062.html) Joel le dit lui-même. –

Répondre

3

Vous pouvez diviser à http:// et re-précédez que pour chaque lien (en supposant qu'il est tout http seulement).

+0

+1 allait juste dire la même chose – Philar

0

Correspondance http:// -s et divisée. Selon le spec, il ne peut pas apparaître dans une autre partie de l'URL.

1
http://(?:(?!http://).)* 

va correspondre à une chaîne qui commence par http:// jusqu'à la prochaine occurrence soit de http:// ou à la fin de la chaîne.

>>> re.findall(r'http://(?:(?!http://).)*', 'http://www.fileserve.com/file/7kXswvM/part1.rarhttp://www.fileserve.com/file/r4F3Gmh/part2.rarhttp://www.fileserve.com/file/r4F3Gmh/part3.rar') 
['http://www.fileserve.com/file/7kXswvM/part1.rar', 
'http://www.fileserve.com/file/r4F3Gmh/part2.rar', 
'http://www.fileserve.com/file/r4F3Gmh/part3.rar'] 

Ceci ne fonctionnera bien sûr pas tout à fait si autre chose qu'un lien suit dans l'entrée. Comme alternative, l'expression régulière suivante correspondra jusqu'à la prochaine http:// ou jusqu'à ce que l'espace suivant (ou en fin de chaîne):

http://(?:(?!http://|\s).)* 
Questions connexes