If you only want the first item in the list you could use vminfo.stdout_lines[0] and then split to get the second part of the string, for example something like this might work (untested):
- name: Set a fact for the VM name
ansible.builtin.set_fact:
vmname: "{{ (vminfo.stdout_lines[0] | ansible.builtin.split)[1] }}"
Notice the “[” and " ]" surrounding the string you want. That means that the variable vminfo.stdout_lines is a list, and it contains a single string. That means that you are passing a list to regex_replace instead of a string.