我有以下字符串:
fname="VDSKBLAG00120C02 (10).gif"
如何10
从字符串中提取值fname
(使用re
)?
一个更简单的正则表达式是\((\d+)\)
:
regex = re.compile(r'\((\d+)\)')
value = int(re.search(regex, fname).group(1))
regex = re.compile(r"(?<=\()\d+(?=\))")
value = int(re.search(regex, fname).group(0))
解释:
(?<=\() # Assert that the previous character is a (
\d+ # Match one or more digits
(?=\)) # Assert that the next character is a )
就个人而言,我会使用这个正则表达式:
^.*\(\d+\)(?:\.[^().]+)?$
有了这个,我可以选择括号中的最后一个数字,就在扩展名之前(如果有的话)。如果文件名中间有任何随机数,它不会去选择括号中的任何随机数。例如,它应该正确地2
从SomeFilmTitle.(2012).RippedByGroup (2).avi
. 唯一的缺点是,它无法区分数字何时在扩展名之前:SomeFilmTitle (2012).avi
.
我假设文件的扩展名(如果有)不应包含()
.