ああ.一応4行目で変換は完了してるんですが,
strの中身が以下の様だったりする場合にも対応したいので.

str = '2007年(01|02|03|04|05|06|07|08|09|10|11)月' => 2007年(0[1-9]|1[01])月
str = '2007年(10|11|12)月'  => 2007年1[0-2]月
str = '(2007年(10|11|12)月|2008年(01|02|03|04|05|06|07|08|09|10|11|12)月)'  => (2007年1[0-2]月|2009年(0[1-9]|1[0-2])月)
str = '01|02|03|04|05|06|07|08'  => 0[1-8]
str = '11|12|13|14|25|26|27|28'   => 1[1-4]|2[5-8]

といった感じに変換されるようなモジュールなどはありませんか?