J'ai l'expression régulière suivante:Pourquoi cette expression régulière ne correspond-elle pas à un espace?
([0-9]+),'(.)':([0-9]+),(L|R|'.')
Il correspond à ce très bien:
1,'a':1,R
Cependant, si je remplace un avec un espace, il échoue:
1,' ':1,R
Pourquoi ne pas . le faire correspondre? Un espace n'est-il pas classé comme personnage? Je ne peux pas utiliser \ s car je ne veux pas faire correspondre les onglets et les sauts de ligne. J'ai essayé aussi:
([0-9]+),'(.|)':([0-9]+),(L|R|'.')
Mais cela ne fonctionne pas, soit (et je n'ai pas IgnorePatternWhitespace
activé).
Votre code fonctionne bien pour moi aussi. Il correspond même lorsque je copie et colle la chaîne pour correspondre directement à mon propre code, ce qui, je suppose, exclut la théorie des caractères non imprimables. Mon programme échoue toujours, cependant. La seule différence est que je vérifie match.Success après avoir appelé regex.Match, plutôt que d'appeler regex.IsMatch. Est-ce que cela pourrait avoir quelque chose à voir avec ça? Quant à votre deuxième suggestion, un seul caractère devrait être autorisé. –
Peu importe, j'ai trouvé le problème. J'ai dérouté une instruction if dans un autre code qui a fini par enlever tous les espaces de chaque ligne avant qu'elle ne soit comparée à l'expression régulière. Je l'ai changé pour enlever uniquement les espaces en dehors des guillemets simples et maintenant ça marche. La vérification d'un caractère non-impression est une bonne suggestion pour d'autres cas, donc, je vais marquer cela comme la réponse. –