J'essaie de faire correspondre une chaîne comme "23.0 32.0". Voici mon regex:RegEx Ou avec Wildcard ne correspond pas
hrs_pnt_regex = /\s{2,}-?\d{1,2}\.\d(\s+|$)/
code:
x = " 23.0 32.0"
x.to_enum(:scan, hrs_pnt_regex).map { Regexp.last_match }
Résultat:
MatchData " 23.0 " 1:" "
Ce que je remarque est que le \ s + ne semble pas fonctionner dans les parens à la fin. Si je le change en "\ s \ s", il correspond aux deux nombres comme ça. Sinon, je ne reçois que le premier.
<MatchData " 23.0 " 1:" ">, <MatchData " 32.0" 1:"">
Est-ce que + ne fonctionne pas avec un | après ça?
Pourquoi '.to_enum' ici? Cela semble être une chose étrange à faire. – tadman
J'ai trouvé cela comme un moyen d'obtenir tous les objets MatchData lorsque vous voulez appliquer une regex globalement à une chaîne. Dans le cas contraire, il retournera simplement les chaînes sans aucun objet qui vous donne la position de départ de la chaîne. –
Si vous faites un 'match' avec un drapeau'/g' vous devriez obtenir toutes les correspondances. – tadman