Python 3,列出在string中找到的所有文件名

时间:2018-02-01 03:42:33

标签: string python-3.x find

以下字符串示例使用.swf

<name="echo" value="2010a.swf"><ie=tango v="bolder.swf"><val=="backstreetboys+AreBack.swf">

使用相应的 =“字符串作为挂钩提取所有.swf名称的最佳方法是什么。

我考虑的第一个代码是这样的:

cnt = 0
holdResults = []
while bla.find('.swf', cnt) != -1:
    holdResults.insert(len(holdResults), bla[bla.find('.swf', cnt):-1])
    cnt = bla.find('.swf', cnt)
    cnt = cnt+1

print(holdResults)

我使用上述代码的障碍是:-1])部分......

我可以一次向后循环一个字符,直到找到相应的 =“ ...但这似乎并不理想或不快,特别是在自定义='某事物时否则或延长它。

有更快更有效的方法吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用Python正则表来查找所有匹配项,而不是迭代字符串:

import re

#your pattern here
pattern = r"\=\"[a-zA-Z0-9\+\!\@\#\$\%\^\&\*\(\)\_]*\.swf\""

#string to search
test_str = "<name=\"echo\" value=\"2010a.swf\"><ie=tango v=\"bolder.swf\"><val==\"backstreetboys+AreBack.swf\">"

#use re.findall() to get all matches
m = re.findall(pattern, test_str)

#print the matches
if m:
    print("Found matches:")
    for i in enumerate(m):
        print(i)

这是一个很好的正则表达式测试程序,可以获得正确的模式:https://regex101.com/