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)