2024-09-24 22:33:10 发布
网友
我有下面的绳子:
fname="VDSKBLAG00120C02 (10).gif"
如何从字符串fname(使用re)提取值10?在
fname
re
10
就我个人而言,我会用这个正则表达式:
^.*\(\d+\)(?:\.[^().]+)?$
这样,我可以选择括号中的最后一个数字,就在扩展名之前(如果有的话)。如果文件名的中间有任何随机数,它就不会选择括号中的任何随机数。例如,它应该正确地从SomeFilmTitle.(2012).RippedByGroup (2).avi中选择2。唯一的缺点是,它无法区分数字何时正好在扩展名之前:SomeFilmTitle (2012).avi。在
SomeFilmTitle.(2012).RippedByGroup (2).avi
2
SomeFilmTitle (2012).avi
我假设文件的扩展名(如果有的话)不应该包含()。在
()
regex = re.compile(r"(?<=\()\d+(?=\))") value = int(re.search(regex, fname).group(0))
说明:
更简单的regex是\((\d+)\):
\((\d+)\)
regex = re.compile(r'\((\d+)\)') value = int(re.search(regex, fname).group(1))
就我个人而言,我会用这个正则表达式:
这样,我可以选择括号中的最后一个数字,就在扩展名之前(如果有的话)。如果文件名的中间有任何随机数,它就不会选择括号中的任何随机数。例如,它应该正确地从
SomeFilmTitle.(2012).RippedByGroup (2).avi
中选择2
。唯一的缺点是,它无法区分数字何时正好在扩展名之前:SomeFilmTitle (2012).avi
。在我假设文件的扩展名(如果有的话)不应该包含
()
。在说明:
^{pr2}$更简单的regex是
\((\d+)\)
:相关问题 更多 >
编程相关推荐