regex 查找字符后的最后一个子字符串

bwleehnv  于 2023-03-04  发布在  其他
关注(0)|答案(4)|浏览(172)

我知道很多查找子字符串的方法:从开始索引到结束索引,字符之间等,但我有一个问题,我不知道如何解决:我有一个字符串,例如路径:folder1/folder2/folder3/new_folder/image.jpg和第二路径:folder1/folder2/folder3/folder4/image2.png
从这条路上我只想走最后一部分:如果我不知道子字符串从什么时候开始(我不知道索引,但我可以假设它将在最后一个/字符之后),如果一个字符重复多次(/),并且扩展名不同(.jpg.png,甚至其他),我怎么能取一个子字符串呢?

eyh26e7m

eyh26e7m1#

使用os.path.basename()代替,不要担心细节。
os.path.basename()返回路径的文件名部分:

>>> import os.path
>>> os.path.basename('folder1/folder2/folder3/new_folder/image.jpg')
'image.jpg'

对于更一般的字符串拆分问题,可以使用str.rpartition()拆分给定字符序列上的字符串 * 从末尾开始计数 *:

>>> 'foo:bar:baz'.rpartition(':')
('foo:bar', ':', 'baz')
>>> 'foo:bar:baz'.rpartition(':')[-1]
'baz'

使用str.rsplit(),您可以多次拆分,直到达到一定的限制,同样从末尾开始:

>>> 'foo:bar:baz:spam:eggs'.rsplit(':', 3)
['foo:bar', 'baz', 'spam', 'eggs']

最后但并非最不重要的一点是,可以使用str.rfind()只查找子字符串的索引,从末尾开始搜索:

>>> 'foo:bar:baz'.rfind(':')
7
ztyzrc3y

ztyzrc3y2#

你也可以这么做-

str_mine = 'folder1/folder2/folder3/new_folder/image.jpg'    
print str_mine.split('/')[-1]

>> image.png
uurv41yg

uurv41yg3#

您可以在最后一次出现时执行此拆分

my_string='folder1/folder2/folder3/new_folder/image2.png'
print(my_string.rsplit("/",1)[1])
output:-
image2.png
hivapdat

hivapdat4#

import re

pattern = re.compile(r"(.*?)/([a-zA-Z0-9]+?\.\w+)")
y = pattern.match(x).groups()
print y[1]

无长度限制。

相关问题