### Summary

It is not possible to use versions for installing packages like it is documented:
> - Comparison operators for package version are valid here C(>), C(<), C(>=), C(<=). Example - C(name>=1.0)

I tried this:
```yaml
- name: "Install packages"
  become: true
  ansible.builtin.dnf:
    allow_downgrade: True
    update_cache: True
    state: present
    name:
      - mypackage>=0.1.2-3.el8
      - mypackage>=0.1.2-3
      - mypackage>=0.1.2
      - C(mypackage>=0.1.2-3.el8)
```
The only thing that works is `mypackage-0.1.2-3.el8`.

### Issue Type

Bug Report

### Component Name

dnf

### Ansible Version

```console
$ ansible --version
ansible 2.9.27
  config file = /home/ngoeddel/git/ansible-v2/ansible.cfg
  configured module search path = ['/home/ngoeddel/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.6/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.6.8 (default, Apr 12 2022, 06:55:39) [GCC 8.5.0 20210514 (Red Hat 8.5.0-10)]
```


### Configuration

```console
# if using a version older than ansible-core 2.12 you should omit the '-t all'
$ ansible-config dump --only-changed -t all

COLLECTIONS_PATHS(/home/ngoeddel/git/ansible-v2/ansible.cfg) = ['/home/ngoeddel/git/ansible-v2/collections']
COMMAND_WARNINGS(/home/ngoeddel/git/ansible-v2/ansible.cfg) = False
DEFAULT_FILTER_PLUGIN_PATH(/home/ngoeddel/git/ansible-v2/ansible.cfg) = ['/home/ngoeddel/git/ansible-v2/filter_plugins']
DEFAULT_HOST_LIST(/home/ngoeddel/git/ansible-v2/ansible.cfg) = ['/home/ngoeddel/git/ansible-v2/environment/openi-epu6/dev']
DEFAULT_ROLES_PATH(/home/ngoeddel/git/ansible-v2/ansible.cfg) = ['/home/ngoeddel/git/ansible-v2/roles']
DEFAULT_STDOUT_CALLBACK(/home/ngoeddel/git/ansible-v2/ansible.cfg) = debug
DEFAULT_STRATEGY(/home/ngoeddel/git/ansible-v2/ansible.cfg) = linear
DEFAULT_TIMEOUT(/home/ngoeddel/git/ansible-v2/ansible.cfg) = 30
DEFAULT_VAULT_PASSWORD_FILE(/home/ngoeddel/git/ansible-v2/ansible.cfg) = /home/ngoeddel/.my.ansible.cnf
DISPLAY_SKIPPED_HOSTS(/home/ngoeddel/git/ansible-v2/ansible.cfg) = False
INTERPRETER_PYTHON(/home/ngoeddel/git/ansible-v2/ansible.cfg) = /usr/bin/python3
RETRY_FILES_ENABLED(/home/ngoeddel/git/ansible-v2/ansible.cfg) = False
```


### OS / Environment

Rocky Linux release 8.6 (Green Obsidian)


### Steps to Reproduce

<!--- Paste example playbooks or commands between quotes below -->
```yaml (paste below)
- name: "Install packages"
  become: true
  ansible.builtin.dnf:
    allow_downgrade: True
    update_cache: True
    state: present
    name:
      - mypackage>=0.1.2-3.el8
      - mypackage>=0.1.2-3
      - mypackage>=0.1.2
      - C(mypackage>=0.1.2-3.el8)
```


### Expected Results

I expect it to install the package `mypackage` in at least version 0.1.2-3.el8 or higher if not already installed.

### Actual Results

```console
fatal: [somehost]: FAILED! => {
    "changed": false,
    "failures": [
        "No package C(mypackage>=0.1.2-4.el8) available."
    ],
    "rc": 1,
    "results": []
}

MSG:

Failed to install some of the specified packages
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
import os
import re
import sys
from ansible.module_utils._text import to_native, to_text
from ansible.module_utils.urls import fetch_file
from ansible.module_utils.six import PY2, text_type
from ansible.module_utils.compat.version import LooseVersion
from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.common.locale import get_best_parsable_locale
from ansible.module_utils.common.respawn import has_respawned, probe_interpreters_for_module, respawn_module
from ansible.module_utils.yumdnf import YumDnf, yumdnf_argument_spec
dnf = None
class DnfModule(YumDnf):
    """
    DNF Ansible module back-end implementation
    """
    def __init__(self, module):
        
        super(DnfModule, self).__init__(module)
        self._ensure_dnf()
        self.lockfile = "/var/cache/dnf/*_lock.pid"
        self.pkg_mgr_name = "dnf"
        try:
            self.with_modules = dnf.base.WITH_MODULES
        except AttributeError:
            self.with_modules = False
        
        self.allowerasing = self.module.params['allowerasing']
        self.nobest = self.module.params['nobest']
    def is_lockfile_pid_valid(self):