Python re でバージョン番号の置換 (正規表現パターン (〜) の中だけ置換)
2018-09-21 03:37 (7 years ago)

ファイルが
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 にマッチ箇所のインデックスが入っているので、それで文字列をスライスすればうまくいくかも
まだ評価がありません
著者は、アプリケーション開発会社 Cyberneura を運営しています。
開発相談をお待ちしています。
開発相談をお待ちしています。