MATLAB: Regexp: \ w * vs \ w +

Donné:
 
t = " the cat";
pStar = "\w*";
pPlus = "\w+";
regexp(t, pStar, 'match'),
regexp(t, pPlus, 'match'),
 
Les deux reviennent:
 
ans =
1×2 string array
"the" "cat"
 
Ma question est pourquoi \ w *, qui est censé correspondrezéroou plusieurs occurrences de la classe \ w, ne correspond pas aux deux espaces et ne les renvoie pas, soit en tant que caractères de tête dans les deux sous-chaînes (« le » et « chat »), soit en tant que sous-chaînes autonomes supplémentaires. Je suppose que je ne sais pas ce que « zéro occurrence » signifie ici. Lorsque le moteur d’expression régulière examine le 1er espace, pourquoi ne le correspondrait-il pas, car il correspond en effet à zéro occurrence de la classe? Peut-être qu’une personne familière avec le comportement du moteur peut vous aider.

Meilleure réponse

  • \ w ne correspond pas aux espaces. \ s est utilisé pour faire correspondre les espaces. \ w ne correspond qu’à a-z A-Z 0-9 et souligne. Après des tentatives pour montrer la différence entre * et +
     

    t = " the cat";
    pStar = "\w*\s";
    pPlus = "\w+\s";
    regexp(t, pStar, 'match')
    regexp(t, pPlus, 'match')