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

Messages postés
55
Date d'inscription
mercredi 1 novembre 2006
Dernière intervention
16 avril 2009
- 4 mars 2009 à 10:54 - Dernière réponse :
Messages postés
55
Date d'inscription
mercredi 1 novembre 2006
Dernière intervention
16 avril 2009
- 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
Messages postés
19
Date d'inscription
lundi 26 janvier 2004
Dernière intervention
4 mars 2009
- 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é 88 internautes ce mois-ci

Commenter la réponse de titom59
Messages postés
19
Date d'inscription
lundi 26 janvier 2004
Dernière intervention
4 mars 2009
- 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
Messages postés
55
Date d'inscription
mercredi 1 novembre 2006
Dernière intervention
16 avril 2009
- 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
Messages postés
55
Date d'inscription
mercredi 1 novembre 2006
Dernière intervention
16 avril 2009
- 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
Messages postés
55
Date d'inscription
mercredi 1 novembre 2006
Dernière intervention
16 avril 2009
- 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.