正则表达式说明?
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
如果我有一个包含多个文本实例的字符串,如下所示:
"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