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

最後のフォルダ名。 @chrisaycockと@レイフ・KETTLERが指摘したようにPython:Regex help

マッチ

+1

「matchthis」.... –

+1

正規表現は必要ありません。最終的なディレクトリを取得するには、2回呼び出す必要があります。単に 'str.split(" \\ ")'または同様のものを使用してください。 – chrisaycock

+1

ディレクトリを使って作業する方が、プラットフォームに依存しない明示的に分割する代わりにos.pathを使用する方が良いでしょう。 – Rozuur

答えて

2

それはプラットフォームに依存しますので、os.path.split(path)を使用することをお勧め。

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

を "matchthis"。可能であれば、x.split(r '\')を使用してください。これは、より速く、読みやすく、そしてより平凡な方法です。正規表現が本当に必要な場合は、正規表現を使用してください。

EDIT: 実際には、os.pathが最適です。プラットフォームに依存しない。 UNIX /窓など

3

正規表現を使用せずに、単に実行します。

>>> 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 – kevpie