3

次の文字列があります。

fname="VDSKBLAG00120C02 (10).gif"

(を使用して)10文字列から値を抽出するにはどうすればよいですか?fnamere

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+\)(?:\.[^().]+)?$

これにより、拡張子 (ある場合) の直前の括弧内の最後の数字を選択できます。ファイル名の途中に乱数がある場合、括弧内の乱数は選択されません。たとえば、2から正しく選択する必要がありSomeFilmTitle.(2012).RippedByGroup (2).aviます。唯一の欠点は、番号が拡張子の直前にある場合に区別できないことです: SomeFilmTitle (2012).avi.

ファイルの拡張子に().

于 2013-01-21T11:43:07.330 に答える