我为非描述性标题道歉,但我想不出更好的标题。
我正在尝试编写一个脚本来解析一些文件名中的子字符串。
因此,例如,这是一个这样的文件名:
[动漫锦鲤] GJ-bu - 07 [h264-720p][A8557259].mkv-00_07_33_00001.jpg
(这很明显是动漫的截图。)
我想从这个名字中得到的是 GJ-bu - 07
子串。
我对正则表达式知之甚少,所以我一直在摸索着想出一个正则表达式来做到这一点。
我认为找到一个表达式的逆函数真的很容易,所以我想出了:
'(\[[a-zA-Z0-9_-]*\]?[.a-zA-Z0-9_-]*)'
Python 的 findall()
用于上述返回:
['[动漫锦鲤]', '[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 没有任何疑虑,尽管我怀疑它在这里有所不同。)
最佳答案
试试这个(s
是输入)。
re.search(r'(?:^|\s)([^[]*)(?=(?:\s|$))', s).group(1)
它本质上意味着,一个空格后跟任意数量的非 [
字符,然后是一个空格。
关于python - 在 Python 中写一个正则表达式来获取一个子串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15214246/