Python re でバージョン番号の置換 (正規表現パターン (〜) の中だけ置換)

(Comments)

ファイルが

version_number = "19";

みたいになっていて、正規表現でそのファイルを置換する時

version_number = "(\d+)";

といったように、バージョン番号のみを正規表現パターンとして、それ以外はパターン記号で囲いたくない場合。

ただし、置換後は

version_number = "20";

と、version_number を含んだ文字列で取得したい。

regex = re.compile('version_number = "(\d+)";')

def
_replace(match):
startindex = match.regs[1][0] - match.regs[0][0]
end_index = match.regs[0][1] - match.regs[1][1]
return match.group(0)[:startindex] + str(value) + match.group(0)[-end_index:]
return regex.sub(_replace, self.get_source_code())

このように、_replace のコールバックの、match.regs にマッチ箇所のインデックスが入っているので、それで文字列をスライスすればうまくいくかも

Currently unrated

Comments

Recent Tweets

  • ytyng

    ytyng @ytyng

    apple developer の、テスト用デバイスのUDIDを1年ごとにチェックして、古い端末を消しちゃうやつ チェックボックスを入れたのを残すのか、消すのかの判断まちがって、全部のUDID消えたわ
    1 week, 5 days ago

  • ytyng

    ytyng @ytyng

    うちの会社 TORICO の 代表が今TV出てます #漫画全巻ドットコム #激レアさんを連れてきた
    2 weeks, 4 days ago

  • ytyng

    ytyng @ytyng

    Proofpoint にブロックされているIPアドレスからでも icloud など Apple メールアドレスにメール送信されてもブロックされてない…?
    1 month, 1 week ago