Pythonuser在这里。 我有一个带文字的字符串,让我们说:
text = "test1.jpg, test2.jpg testest.gif tata.jpg, trol.jpg, dam.blog"
我想获得一张包含所有jpg图片的列表,所以我想要匹配:" NAME.jpg"
我的代码(python3):
text="test1.jpg, test2.jpg testest.gif tata.jpg, trol.jpg, dam.blog"
jpgRegex = re.compile(r".+\.jpg")
list1 = jpgRegex.findall(text)
print(list1)
结果不是我想要的:
['test1.jpg, test2.jpg testest.gif tata.jpg, trol.jpg']
我现在没有看到问题:(谁可以帮忙?谢谢。
答案 0 :(得分:1)
.
匹配任何字符(贪婪,尽可能匹配)。您需要使用其他模式,例如\S
仅匹配非空格字符:
>>> import re
>>> text = "test1.jpg, test2.jpg testest.gif tata.jpg, trol.jpg, dam.blog"
>>> re.findall(r"\S+\.jpg", text)
['test1.jpg', 'test2.jpg', 'tata.jpg', 'trol.jpg']
答案 1 :(得分:0)
答案 2 :(得分:0)
您可以尝试使用\w
代替.
:
import re
text="test1.jpg, test2.jpg testest.gif tata.jpg, trol.jpg, dam.blog"
jpgRegex = re.compile(r"\w+\.jpg")
list1 = jpgRegex.findall(text)
print(list1)
>>> ['test1.jpg', 'test2.jpg', 'tata.jpg', 'trol.jpg']
答案 3 :(得分:0)
试试这个:
>>> import re
>>> text = "test1.jpg, test2.jpg, testest.gif, tata.jpg, trol.jpg, dam.blog"
>>> jpgRegex = re.compile(r"[a-zA-Z]*[0-9]*.jpg")
>>> list1 = jpgRegex.findall(text)
>>> list1
['test1.jpg', 'test2.jpg', 'tata.jpg', 'trol.jpg']
答案 4 :(得分:0)
这可能是使用fnmatch.fnmatch
:
>>> from fnmatch import fnmatch
>>> [x.rstrip(',') for x in text.split() if fnmatch(x.rstrip(','), '*.jpg')]
['test1.jpg', 'test2.jpg', 'tata.jpg', 'trol.jpg']
或使用内置方法str.endswith()
:
>>> [x.rstrip(',') for x in text.split() if x.rstrip(',').endswith('.jpg')]
['test1.jpg', 'test2.jpg', 'tata.jpg', 'trol.jpg']