Найти - Пользователи
Полная версия: Регулярное выражение, вернуть последнее совпадение.
Начало » Python для новичков » Регулярное выражение, вернуть последнее совпадение.
1 2 3
darksmoke
Добрый день.
Не как не могу понять как составить регулярное выражение которое вернет имя файла.
Т.е. есть путь /home/test/soft/print.sh
как получить в переменную print.sh?
Nata
>>> reg=re.compile("\S+/(.+)")
>>> reg.match("/home/test/soft/print.sh").group(1)
'print.sh'
>>> os.path.basename("/home/test/soft/print.sh")
'print.sh'
>>> 
darksmoke
Ух ты! os.path.basename - это круто!
Спасибо!
py.user.next
darksmoke
как составить регулярное выражение
re.search(r'/(.*)$', s)
Nata
>>> re.search(r'/(.*)$', "/home/test/soft/print.sh").group()
'/home/test/soft/print.sh'
>>> 
py.user.next
Надо было проверить.
>>> import re
>>> 
>>> s = 'abc/def/abc/file.txt'
>>> re.search(r'[^/]*$', s).group()
'file.txt'
>>>

Nata
reg=re.compile("\S+/(.+)")
Пути могут быть с пробелами.
Nata
py.user.next
Пути могут быть с пробелами.
да, верно
>>> reg=re.compile(".*/(.+)")
>>> re.search(reg, "/home/test/soft ware/print.sh").group(1)
'print.sh'
>>> 
Ваш все равно лучше…
bs0d
Регулярка приоритетнее сплиту?
>>> st = "/home/test/soft/print.sh"
>>> st.rsplit('/')[-1]
print.sh
dimy44
Правильный ответ был дан с самого начала - os.path.basename, а это ребята уже просто развлекаются.
py.user.next
bs0d
st.rsplit('/')[-1]
Так а зачем делить по всем слешам? Нужно один раз отделить. :)

Nata
Ваш все равно лучше…
Ну, не факт, надо сначала сравнить по времени и памяти.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB