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

2018-09-21 12:37 (6年前) ytyng
View in English

ファイルが

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

現在未評価
タイトルとURLをコピー

コメント

アーカイブ

2024
2023
2022
2021
2020
2019
2018
2017
2016
2015
2014
2013
2012
2011