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

    在宅で仕事してるので古い曲をけっこう聞いてる。久々にコーガニズムオーケストラ聞いたらめっちゃかっこいい。昔対バンして間近で見て強烈に心を持ってかれたことを思い出した。新潟古町のJunkBox。またミクスチャーやりたいわ。
    1 week, 5 days ago

  • ytyng

    ytyng @ytyng

    slack 503
    2 weeks, 3 days ago

  • ytyng

    ytyng @ytyng

    11:40 頃解消された。
    1 month, 2 weeks ago