##### SUMMARY
Ansible run fails and I want to retry the failed hosts with the --limit @windows.retry command and it fails with "ERROR! Unexpected Exception, this is probably a bug: string index out of range"

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
<!--- Write the short name of the module, plugin, task or feature below, use your best guess if unsure -->
limit

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below
$ ansible --version
ansible 2.9.0.dev0
  config file = /Users/tanner/projects/ansible.git/playbooks.git/celadonsystems.com/ansible.cfg
  configured module search path = [u'/Users/tanner/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /Users/tanner/projects/ansible.git/ansible/lib/ansible
  executable location = /Users/tanner/projects/ansible.git/ansible/bin/ansible
  python version = 2.7.10 (default, Feb 22 2019, 21:55:15) [GCC 4.2.1 Compatible Apple LLVM 10.0.1 (clang-1001.0.37.14)]
```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```paste below
$ ansible-config dump --only-changed

```

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->
Management host macOS 10.14.6
Managed hosts various releases of Windows

##### STEPS TO REPRODUCE
<!--- Describe exactly how to reproduce the problem, using a minimal test-case -->

<!--- Paste example playbooks or commands between quotes below -->
Run ansible and have a failure so you get the retry file
```yaml
$ ansible-playbook -i testing ../windows.yml  --limit @../windows.retry
```

##### EXPECTED RESULTS
Ansible will run for just the failed hosts in the retry file

##### ACTUAL RESULTS
ERROR! Unexpected Exception, this is probably a bug: string index out of range

<!--- Paste verbatim command output between quotes -->
```paste below
ERROR! Unexpected Exception, this is probably a bug: string index out of range
```

if not ignore_restrictions and self._restriction:
                pattern_list.extend(self._restriction)
            
            
            pattern_hash = tuple(pattern_list)
            if pattern_hash not in self._hosts_patterns_cache:
                patterns = split_host_pattern(pattern)
                hosts[:] = self._evaluate_patterns(patterns)
                
                if not ignore_limits and self._subset:
                    
                    subset_uuids = set(s._uuid for s in self._evaluate_patterns(self._subset))
                    hosts[:] = [h for h in hosts if h._uuid in subset_uuids]
                if not ignore_restrictions and self._restriction:
                    
                    hosts[:] = [h for h in hosts if h.name in self._restriction]
                self._hosts_patterns_cache[pattern_hash] = deduplicate_list(hosts)
            
            if order in ['sorted', 'reverse_sorted']:
                hosts[:] = sorted(self._hosts_patterns_cache[pattern_hash][:], key=attrgetter('name'), reverse=(order == 'reverse_sorted'))
            elif order == 'reverse_inventory':
                hosts[:] = self._hosts_patterns_cache[pattern_hash][::-1]
            else:
                hosts[:] = self._hosts_patterns_cache[pattern_hash][:]
                if order == 'shuffle':
                    shuffle(hosts)
                elif order not in [None, 'inventory']:
                    raise AnsibleOptionsError("Invalid 'order' specified for inventory hosts: %s" % order)
        return hosts
    def _evaluate_patterns(self, patterns):