[Regex] Récupérer une chaine de caractère [Résolu]

4rocky4 55 Messages postés mercredi 1 novembre 2006Date d'inscription 16 avril 2009 Dernière intervention - 4 mars 2009 à 10:54 - Dernière réponse : 4rocky4 55 Messages postés mercredi 1 novembre 2006Date d'inscription 16 avril 2009 Dernière intervention
- 11 mars 2009 à 11:39
Bonjour tout le monde,

Je viens de découvrir les expressions régulières et j'aurais besoin d'aide

J'ai un fichier (fichier.sql) qui contient un très grand nombre de CREATE TABLE.

Afin de créer l'auto incrément pour les tables qui en ont besoin, je dois créer à la fin de ce fichier les séquences et triggers des tables correspondantes. (seulement les tables qui contiennent IDENTITY dans leur création)

Pour cela, je dois récupérer le nom de la table ainsi que le champ unique.

CREATE TABLE T1_E (
  ID_E INTEGER  NOT NULL   IDENTITY ,
  NOM_E VARCHAR(32)  NOT NULL  ,
  T1_E_LIB INTEGER      ,
PRIMARY KEY(ID_E));

Je bloque pour la récupération de ces deux champs ...

Je vous remercie par avance.
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
titom59 19 Messages postés lundi 26 janvier 2004Date d'inscription 4 mars 2009 Dernière intervention - 4 mars 2009 à 15:17
3
Merci
à mon avis tu dois procéder en plusieurs étapes.

lire ton fichier ligne à ligne en isolant tous les bloc Create Table  :

CREATE TABLE T1_E (
  ID_E INTEGER  NOT NULL   IDENTITY ,
  NOM_E VARCHAR(32)  NOT NULL  ,
  T1_E_LIB INTEGER      ,
PRIMARY KEY(ID_E));

puis traiter chacun avec ta fonction

Titom59 !

Merci titom59 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 84 internautes ce mois-ci

Commenter la réponse de titom59
titom59 19 Messages postés lundi 26 janvier 2004Date d'inscription 4 mars 2009 Dernière intervention - 4 mars 2009 à 12:55
0
Merci
Salut,

L'extraction de données d'une chaine de caractères est possible via l'utilisation de groupe :

la syntax d'un groupe est :  (?<NOMDUGROUPE>CaracteresDuGroupeAExtraire)

par exemple :

 Regex regProcedureType = new Regex(@"^(?[a-zA-Z-]+)_");
 Match matchProcedureType = regProcedureType.Match(fileName);

string s = matchProcedureType.Groups["PROCEDURE"].Value;

PROCEDURE ici est un sous ensemble a extraire : du début de la chaine (fileName) jusqu'au premier underscore

en lisant ton fichier ligne à ligne tu peux donc contrôler la présence de CREATE TABLE
puis en extraire la chaine qui suit avant (

de même pour IDENTITY

en espérant que ça puisse t'aider.

Titom59 !
Commenter la réponse de titom59
4rocky4 55 Messages postés mercredi 1 novembre 2006Date d'inscription 16 avril 2009 Dernière intervention - 4 mars 2009 à 14:50
0
Merci
Merci bien pour cette réponse.

J'arrive a créer les triggers et les séquences automatiquement, c'est parfait !

Par contre actuellement je créer la séquence et le trigger uniquement pour le premier CREATE TABLE de mon fichier.

Comment je pourrais procéder pour créer les triggers et sequences pour tous les CREATE TABLE contenant IDENTITY dans la création ?
Commenter la réponse de 4rocky4
4rocky4 55 Messages postés mercredi 1 novembre 2006Date d'inscription 16 avril 2009 Dernière intervention - 4 mars 2009 à 15:55
0
Merci
Pour isoler le bolc create table, je pourrais faire ça avec un regex en utilisant la méthode des groupes comme présenté ci-dessus non ?
Commenter la réponse de 4rocky4
4rocky4 55 Messages postés mercredi 1 novembre 2006Date d'inscription 16 avril 2009 Dernière intervention - 11 mars 2009 à 11:39
0
Merci
J'ai utilisé les expressions régulières pour récupérer ce que je voulais. Merci
Commenter la réponse de 4rocky4

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.