Expressions régulières - Correspondance des espaces
Je vais avoir un gros problème pour écrire une expression régulière qui sera couper tous les espaces dans mon entrée.
J'ai essayé \s+
et [ \t\t\r]+
mais qui ne fonctionnent pas.
J'ai besoin de cela parce que je suis en train d'écrire un scanner à l'aide de flex, et je suis coincé à l'appariement des espaces.
Les espaces doivent juste être appariés et non supprimé.
Exemple d'entrée:
program
3.3 5 7
{ comment }
string
panic: cant happen
OriginalL'auteur mrjasmin | 2012-11-09
Vous devez vous connecter pour publier un commentaire.
flex
utilise (environ) la POSIX "une Expression Régulière Étendue" syntaxe --\s
ne fonctionne pas, parce que c'est une extension Perl.Est
[ \t\t\r]+
une faute de frappe? Je pense que vous aurez envie d'une\n
.Quelque chose comme
[ \n\t\r]+
certainement devrait travail. Par exemple, ce lexer (que j'ai enregistré commelexer.l
):...avec succès correspond à l'espace dans votre exemple d'entrée (que j'ai enregistré comme
input.txt
):Utilisation
[ \n\t\r\f]+
pour la mise en correspondance de tous les caractères de fin de ligne. En omettant\f
ne correspond pas Windows/DOS les fichiers de type. Source: web.eecs.utk.edu/~bvz/cs461/notes/flexOriginalL'auteur Matthew Slattery
Je ne suis pas un spécialiste de flex, mais avez-vous utilisez /g et /m drapeaux dans votre expression régulière, de travailler avec multiligne srings.
OriginalL'auteur Vyacheslav Voronchuk