https://demo.promlens.com/?q=label_replace(up%2C%20%22hostname%22%2C%20%22%241%22%2C%20%22instance%22%2C%20%22(.%2B)%3A(%5C%5Cd%2B)%22)
Assume you have metric namely up
up{instance="cadvisor:8080", job="cadvisor"}
up{instance="demo-service-0:10000", job="demo"}
up{instance="demo-service-1:10001", job="demo"}
up{instance="demo-service-2:10002", job="demo"}
up{instance="docker-hub-exporter:9170", job="docker-hub-exporter"}
up{instance="node-exporter:9100", job="node"}
up{instance="prometheus:9090", job="prometheus"}
Now query
label_replace(up, "hostname", "$1", "instance", "(.+)-(.+)-(\\d+):(\\d+)")
will return with new label hostname with first match group ("$1").
up{instance="cadvisor:8080", job="cadvisor"}
up{hostname="demo", instance="demo-service-0:10000", job="demo"}
up{hostname="demo", instance="demo-service-1:10001", job="demo"}
up{hostname="demo", instance="demo-service-2:10002", job="demo"}
up{instance="docker-hub-exporter:9170", job="docker-hub-exporter"}
up{instance="node-exporter:9100", job="node"}
up{instance="prometheus:9090", job="prometheus"}
Query
label_replace(up, "hostname", "$2", "instance", "(.+)-(.+)-(\\d+):(\\d+)")
will return with new label hostname with second match group ("$2") of the regEx.
up{instance="cadvisor:8080", job="cadvisor"}
up{hostname="service", instance="demo-service-0:10000", job="demo"}
up{hostname="service", instance="demo-service-1:10001", job="demo"}
up{hostname="service", instance="demo-service-2:10002", job="demo"}
up{instance="docker-hub-exporter:9170", job="docker-hub-exporter"}
up{instance="node-exporter:9100", job="node"}
up{instance="prometheus:9090", job="prometheus"}