2016-08-05 4 views
-2

Что бы регулярное выражение для таких данныхPython регулярное выражение для

/home//Desktop/3A5F.py 
path/sth/R67G.py 
a/b/c/d/t/6UY7.py 

я хотел бы получить эти

3A5F.py 
R67G.py 
6UY7.py 
+1

Привет, добро пожаловать в StackOverflow. что ты уже испробовал? (подсказка: никаких регулярных выражений не требуется) – msvalkon

+0

'' /home//Desktop/3A5F.py".split ("/") [- 1] ' – msvalkon

+0

Возможно, обман [* Python, извлечение имени файла из пути, нет вопрос о том, какой формат os/path *] (http://stackoverflow.com/questions/8384737/python-extract-file-name-from-path-no-matter-what-the-os-path-format) –

ответ

2

Похоже, вы разбираете пути, в этом случае вы действительно должны использовать os.path вместо регулярных выражений:

from os.path import basename 
basename('/home//Desktop/3A5F.py') 
# 3A5F.py 
0

использование: [^\/]*\.py$

Но это плохой вопрос. Вам нужно показать, что вы попробовали. Вы здесь не для того, чтобы делать свою работу за вас.

+0

* Но это плохой вопрос. * - Тогда зачем отвечать? (в основном, это вопрос для всех, кто отвечает здесь). –

1

В качестве альтернативы, вы можете получить тот же результат без регулярных выражений:

lines = ['/home//Desktop/3A5F.py', 'path/sth/R67G.py', 'a/b/c/d/t/6UY7.py'] 

result = [l.split('/')[-1] for l in lines] 
print result 
# ['3A5F.py', 'R67G.py', '6UY7.py'] 
0

Вы можете использовать это.

pattern = ".*/(.*$)" 
mystring = "/home//Desktop/3A5F.py" 
re.findall(pattern, mystring) 

Вы также можете использовать os.path.split(mystring)

Смежные вопросы