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

Der letzte Ordnername.Python: Regex-Hilfe

Match "matchthis"

+1

'matchthis' .... –

+1

Keine Notwendigkeit für regex; Verwenden Sie einfach 'str.split (" \\ ")' oder ähnliches. – chrisaycock

+1

Arbeiten mit Verzeichnissen ist es besser, os.path anstelle von – Rozuur

Antwort

2

Bessere os.path.split(path) zu verwenden, da es plattformunabhängig ist. Sie müssen es zweimal aufrufen, um das endgültige Verzeichnis zu erhalten:

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',) 

Als @chrisaycock und @ rafe-kettler hingewiesen. Benutze die x.split (r '\') wenn du kannst. Es ist viel schneller, lesbarer und pythonischer. Wenn Sie wirklich eine Regex brauchen, dann benutzen Sie eine.

EDIT: Eigentlich os.path ist am besten. Plattformunabhängig. Unix/Windows usw.

3

Ohne regex, tun gerade:

>>> 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 zu verwenden, plattformunabhängig und explizit. – kevpie