次の文字列があります。
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
.
ファイルの拡張子に()
.