3

我有以下字符串:

fname="VDSKBLAG00120C02 (10).gif"

如何10从字符串中提取值fname(使用re)?

4

3 回答 3

7

一个更简单的正则表达式是\((\d+)\)

regex = re.compile(r'\((\d+)\)')
value = int(re.search(regex, fname).group(1))
于 2013-01-21T11:33:24.137 回答
6
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 )
于 2013-01-21T11:18:27.150 回答
0

就个人而言,我会使用这个正则表达式:

^.*\(\d+\)(?:\.[^().]+)?$

有了这个,我可以选择括号中的最后一个数字,就在扩展名之前(如果有的话)。如果文件名中间有任何随机数,它不会去选择括号中的任何随机数。例如,它应该正确地2SomeFilmTitle.(2012).RippedByGroup (2).avi. 唯一的缺点是,它无法区分数字何时在扩展名之前:SomeFilmTitle (2012).avi.

我假设文件的扩展名(如果有)不应包含().

于 2013-01-21T11:43:07.330 回答