1
votes

Regex pour sélectionner le dernier mot du chemin

J'ai quelques chaînes comme celle-ci:

C:/DB/UCMerced_LandUse/UCMerced_LandUse/Unfoldered_Images/airplane00.tif

Je voudrais ne garder que 'plane' . Pour cela, j'ai mis au point les expressions rationnelles suivantes:

[^ /] + $ - qui sélectionnerait 'plane00.tif'

^ \ D * - qui supprime la dernière partie (c'est-à-dire 'C: / DB / UCMerced_LandUse / UCMerced_LandUse / Unfoldered_Images / avion' ) p >

Comment puis-je combiner ces deux pour obtenir uniquement 'avion' ? Ou peut-être existe-t-il une meilleure approche ...

Merci.


2 commentaires

devez-vous le faire avec regex? Vous pouvez facilement y parvenir en divisant la chaîne et en remplaçant les chiffres. Quelle langue utilisez-vous?


@shakhawat c'est Python, mais j'ai besoin d'une expression régulière comme chaîne pour un paramètre de fonction.


4 Réponses :


1
votes

Vous pouvez utiliser cette expression régulière et récupérer le groupe capturé n ° 1

(?<=/)[^/\d]+(?=[^/]*$)

Démo RegEx

[^ / \ d] + correspond à 1 ou plus de n'importe quel caractère autre que \ d et / .

Alternativement , vous pouvez également utiliser cette expression régulière avec des assertions lookbehind et lookahead:

([^/\d]+)[^/]*$

p>


0 commentaires

0
votes

Utilisez ([^ \ /] +) \. \ D + $ et faites correspondre le premier groupe de capture.

Il est probablement préférable d'utiliser certaines fonctionnalités intégrées de votre langage de programmation pour obtenir le nom de fichier à partir du chemin. Le fractionnement de la chaîne serait également une possibilité.


0 commentaires

0
votes

Essayez

[^\]([a-zA-Z]+)[^\].*$

Ensuite, il vous suffit d'obtenir le premier groupe.

En python, tout ce que vous avez à faire est d'ajouter .group (1) à la fin de votre ligne.

check out cet article sur la capture de groupes


0 commentaires

0
votes

Comme alternative, vous pouvez faire correspondre jusqu'à la dernière occurrence de / , puis capturer n'importe quel caractère sauf une barre oblique ou un chiffre dans un groupe ([^ / \ d] +) \ d * et correspond à tous les chiffres potentiellement suivants.

Ensuite, correspond à un point et à n'importe quel caractère sauf une barre oblique.

La valeur est dans le groupe de capture 1.

/([^/\d]+)\d*\.[^/]+$

Démo Regex


0 commentaires