匹配.jpg正则表达式

时间:2016-04-04 09:11:55

标签: python regex

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']

我现在没有看到问题:(谁可以帮忙?谢谢。

5 个答案:

答案 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)

以下正则表达式将返回示例中的jpg文件:

\b[\w\-]+\.jpg\b
  • \b字边界
  • [\w\-]+至少一个字符或连字符
  • \.字面点
  • jpg文字jpg
  • \b字边界

demo

答案 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']