我为这个非描述性的标题道歉,但我想不出更好的标题。
我正在尝试编写一个从某些文件名中解析子字符串的脚本。
因此,例如,这是一个这样的文件名:
[Anime-Koi] GJ-bu - 07 [h264-720p][A8557259].mkv-00_07_33_00001.jpg
(这显然是动漫的截图。)
我想从这个名字中得到GJ-bu - 07
子字符串。
我对正则表达式知之甚少,所以我一直在摸索着想出一个正则表达式来做到这一点。
我认为找到表达式的倒数真的很容易,所以我想出了:
'(\[[a-zA-Z0-9_-]*\]?[.a-zA-Z0-9_-]*)'
Pythonfindall()
用于上述返回:
['[Anime-Koi]', '[h264-720p]', '[A8557259].mkv-00_07_33_00001.jpg']
不幸的是,我不知道如何得到逆,无论我多么努力地挠我的大脑,我都无法想出一个正则表达式来满足我的需要。
所以,呃,你们能帮我想出一个返回的表达式GJ-bu - 07
吗?
我知道我可以作弊,然后这样做:
f = "[Anime-Koi] GJ-bu - 07 [h264-720p][A8557259].mkv-00_07_33_00001.jpg"
reg_ex = r'(\[[a-zA-Z0-9_-]*\]?[.a-zA-Z0-9_-]*)'
p = re.compile(reg_ex)
l = p.findall(f)
for st in l:
f = f.replace(st, '')
但那是作弊,所以我宁愿不这样做。
谢谢你的时间。
(注意:我为此使用了 Python 2.7,但我对使用 3.2 没有任何疑虑,尽管我怀疑它在这里会有所不同。)