2010-12-14 6 views
0
str = "a\b\c\dsdf\matchthis\erwe.txt" 

Le dernier nom de dossier.Python: aide sur Regex

Match "matchthis"

+1

'matchthis' .... –

+1

Pas besoin de regex; utilisez juste 'str.split (" \\ ")' ou similaire. – chrisaycock

+1

Travailler avec les répertoires est préférable d'utiliser os.path au lieu de diviser – Rozuur

Répondre

2

Mieux vaut utiliser os.path.split(path) depuis sa plate-forme indépendante. Vous devez appeler deux fois pour obtenir le répertoire final:

path_file = "a\b\c\dsdf\matchthis\erwe.txt" 
path, file = os.path.split(path_file) 
path, dir = os.path.split(path) 
0
x = "a\b\c\d\match\something.txt" 
match = x.split('\\')[-2] 
1
>>> str = "a\\b\\c\\dsdf\\matchthis\\erwe.txt" 
>>> str.split("\\")[-2] 
'matchthis' 
0
>>> import re 
>>> print re.match(r".*\\(.*)\\[^\\]*", r"a\b\c\dsdf\matchthis\erwe.txt").groups() 
('matchthis',) 

Comme @chrisaycock et @ Rafe-Kettler souligné. Utilisez le x.split (r '\') si vous le pouvez. C'est beaucoup plus rapide, lisible et plus pythonique. Si vous avez vraiment besoin d'une regex, utilisez-en une.

EDIT: En fait, os.path est le meilleur. Plate-forme indépendante. unix/windows etc.

3

sans l'aide de regex, il suffit de faire:

>>> import os 
>>> my_str = "a/b/c/dsdf/matchthis/erwe.txt" 
>>> my_dir_path = os.path.dirname(my_str) 
>>> my_dir_path 
'a/b/c/dsdf/matchthis' 
>>> my_dir_name = os.path.basename(my_dir_path) 
>>> my_dir_name 
'matchthis' 
+0

+1, plate-forme indépendante et explicite. – kevpie