正则表达式提取文件名部分

2 投票
5 回答
1246 浏览
提问于 2025-04-16 16:39

我想从一个xml字符串中提取文件名的一部分

示例

<assets>
<media width="100%" height="100%" img="/assets/560PEgnR/kVvNKfOX7w9tf7.JPG"  valign="top"/>
<media width="100%" height="100%" img="/assets/560PEgnR/kVvNKfOX7w9tf5.JPG"  valign="top"/>
<media width="100%" height="100%" img="/assets/560PEgnR/kVvNKfOX7w9tf4.JPG"  valign="top"/>
</assets>

我想从所有条目中匹配并获取560PEgnR这一部分,不管文件名是什么

到目前为止我有

/assets/(.*)/*"

但是它没有达到我想要的效果

希望能得到一些帮助

谢谢

5 个回答

2

一种不使用正则表达式的方法

>>> string="""
... <assets>  
... <media width="100%" height="100%" img="/assets/560PEgnR/kVvNKfOX7w9tf7.JPG"  valign="top"/>
... <media width="100%" height="100%" img="/assets/560PEgnR/kVvNKfOX7w9tf5.JPG"  valign="top"/>
... <media width="100%" height="100%" img="/assets/560PEgnR/kVvNKfOX7w9tf4.JPG"  valign="top"/>
... </assets>                                                                                  
... """           

>>> for line in string.split("\n"):
...     if "/assets/" in line:
...         print line.split("/assets/")[-1].split("/")[0]
...
560PEgnR
560PEgnR
560PEgnR
4

另外...

/assets/([^/])+/
3

你可以试试这个:

/assets/(.*?)/.*

.* 是贪婪的,也就是说它会尽量匹配尽可能多的内容,但如果你用 ? 的话,它就会在第一个 / 的地方停止匹配。

撰写回答