正则表达式提取文件名部分
我想从一个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/(.*?)/.*
.*
是贪婪的,也就是说它会尽量匹配尽可能多的内容,但如果你用 ?
的话,它就会在第一个 /
的地方停止匹配。