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.
4 Réponses :
Vous pouvez utiliser cette expression régulière et récupérer le groupe capturé n ° 1
(?<=/)[^/\d]+(?=[^/]*$)
[^ / \ 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>
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é.
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.
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*\.[^/]+$
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.