ファイルが
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 にマッチ箇所のインデックスが入っているので、それで文字列をスライスすればうまくいくかも
コメント