正则表达式说明?

Regular Expression Clarification?

如果我有一个包含多个文本实例的字符串,如下所示:

"img": "/static/thumbs/1607.02533v4.pdf.jpg"

提取这部分的正则表达式是什么样的:

1607.02533v4.pdf

尝试过这样的操作:re.findall(r'(?<=thumbs/)(.*)(?=.jpg)') 获取文本,但它似乎不起作用。

编辑:解决了问题。这场比赛很贪婪,需要添加一个?在.*

之后

re.findall(r'(?<=thumbs/)(.*?)(?=.jpg)')

这是一个假设所有文件都具有相同命名约定的示例:

import re
s = '''
"img": "/static/thumbs/1607.02533v1.pdf.jpg"
"img": "/static/thumbs/1608.02533v2.pdf.jpg"
"img": "/static/thumbs/1609.02533v3.pdf.jpg"
"img": "/static/thumbs/1610.02533v4.pdf.jpg"
'''
re.findall(r'thumbs/([0-9.a-z]+.pdf)', s)

输出:

['1607.02533v1.pdf', '1608.02533v2.pdf', '1609.02533v3.pdf', '1610.02533v4.pdf']

解释:

thumbs/([0-9.a-z]+.pdf)

thumbs/ 开头 有一个包含 1 个或多个字符的组 0-9 a .a-z 并以 .pdf

结尾

执行1607.02533v4.pdf

对于 C# ASP.NET 2.0 - 4.7.2,.NET Core,C++,Delphi:

[0-9]+\.[0-9]+v[0-9]+\.\w{3}

执行1607.02533v4

对于 C# ASP.NET 2.0 - 4.7.2,.NET Core,C++,Delphi:

[0-9]+\.[0-9]+v[0-9]+

Java 8,Javascript,MySQL,Orqcle 11gR2 & 12c,PHP 7.0.4 - 4.1.17,Visual Basic 6, Python 2.7, Python 3.6, Ruby 2.4 - 2.5, VBScript:

[0-9]+\.[0-9]+v

这里online RegEx tester