import re
def process(p, provider, version):
return re.sub(r'(provider\s+"{}"\s+{{[\s\S]*?version\s+=\s+"~>\s*)[^"]*'.format(provider),
r'\g<1>{}'.format(version),
p)
p = """
provider "aws" {
region = var.region
version = "~> 2.59"
assume_role {
role_arn = "tes_role"
}
}
"""
r = process(p, "aws", "2.61")
print(r)
aW1wb3J0IHJlCgpkZWYgcHJvY2VzcyhwLCBwcm92aWRlciwgdmVyc2lvbik6CiAgcmV0dXJuIHJlLnN1YihyJyhwcm92aWRlclxzKyJ7fSJccyt7e1tcc1xTXSo/dmVyc2lvblxzKz1ccysifj5ccyopW14iXSonLmZvcm1hdChwcm92aWRlciksCiAgICByJ1xnPDE+e30nLmZvcm1hdCh2ZXJzaW9uKSwKICAgIHApCgpwID0gIiIiCnByb3ZpZGVyICJhd3MiIHsKICByZWdpb24gID0gdmFyLnJlZ2lvbgogIHZlcnNpb24gPSAifj4gMi41OSIKCiAgYXNzdW1lX3JvbGUgewogICAgcm9sZV9hcm4gPSAidGVzX3JvbGUiCiAgfQp9CiIiIgoKciA9IHByb2Nlc3MocCwgImF3cyIsICIyLjYxIikKcHJpbnQocik=