2010-11-20 7 views
0

Je voudrais effectuer une expression régulière dans C. Supposons que je le texte suivant comme:effectuant une expression régulière dans C

thecapital([x], implies(maincity(y),x)) 

Le programme a à la sortie comme:

implies(maincity(y),x)) 

quelqu'un peut-il s'il vous plaît suggérer comment dois-je procéder?

+2

Voir http://stackoverflow.com/questions/725630/regular-expressions-in-c – gimel

+0

Bien sûr, vous devez utiliser des expressions régulières? Pourquoi ne pas utiliser strtok() pour diviser la chaîne en ","? – helpermethod

+0

Que se passe-t-il si les deux "x" ne sont pas identiques? –

Répondre

4

Pour transformer la chaîne d'entrée thecapital([x], implies(maincity(y),x)) à la chaîne de sortie implies(maincity(y),x)) vous pouvez utiliser la fonction simple:

const char * 
transform(const char *expr) { 
    return expr + 16; 
} 

Il n'utilise des expressions régulières, mais d'autre part, il est rapide comme l'éclair. Ou peut-être que vous n'avez pas posé votre question clairement. Par exemple, vous n'avez pas décrit en mots ce que la transformation devrait être faite. Donner juste un exemple ne suffit pas.

Alors qu'est-ce que vous voulez vraiment faire :?

  • Passer les 16 premiers caractères de la chaîne d'entrée
  • tout retour après le premier caractère de l'espace
  • tout retour après le dernier caractère de l'espace
  • Retour le suffixe de l'argument en commençant par la deuxième i
  • Retour "implies(maincity(y),x))"
  • Renvoyer le second argument entre parenthèses, suivi d'une parenthèse fermante supplémentaire

Pour votre exemple, ma fonction simple proposée répond à toutes ces exigences. Mais bien sûr, il échouera désespérément lorsqu'on lui donnera une autre contribution.