如果我有一个字符串,其中包含几个看起来像这样的文本实例:
“ img”:“ /static/thumbs/1607.02533v4.pdf.jpg”
提取该部分的正则表达式是什么样的:
1607.02533v4.pdf
尝试了类似这样的操作:(((2, 1.3), (4.1, 3), (5.3, 2.6), (2.9, 0.7), (2, 1.3)))
(((2, 1), (5, 3)))
(((2, 1), (2.225, 1.15)), ((4.7, 2.8), (5, 3)), ((2.225, 1.15), (4.7, 2.8)))
,以使文本介于两者之间,但似乎不起作用。
编辑:找出问题所在。这场比赛很贪心,需要加上一个?在。*
之后 re.findall(r'(?<=thumbs/)(.*)(?=.jpg)')
答案 0 :(得分:0)
这是一个假设文件都具有相同命名约定的示例:
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-z
的组,并以.pdf
答案 1 :(得分:0)
执行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