OVH Cloud OVH Cloud

Expressions régulières

4 réponses
Avatar
hdl
Bonjour,
Me voici face à un fichier où un champ me pose problème :
Il est globalement structuré de la façon suivante :
CODE(\s)?/(\s)?chaîne quelconque((\s)?(-|(0x0B))(\s)?(chaîne|
CODE(\s)?/(\s)?chaîne))*

Mon problème est le suivant :
-CODE est une chaîne de caractère en majuscule, peut-être réduite à une
majuscule, par exemple C ou E.
-Je veux récupérer les codes et chaînes pour pouvoir ensuite les
enregistrer dans une base de données.
-Faire simple et efficace.

Pour ceux qui le veulent, je peux leur communiquer un extrait de la
liste, avec quelques bizarreries qui me font un peu peur.

D'avance merci.
Henri-Damien LAURENT

4 réponses

Avatar
Denis -esp2008-
Bonjour,

Pour ceux qui le veulent, je peux leur communiquer un extrait de la
liste, avec quelques bizarreries qui me font un peu peur.


Cela est effectivement nécessaire pour pouvoir se prononcer.

--
Denis

Avatar
hdl
Bonjour,


Pour ceux qui le veulent, je peux leur communiquer un extrait de la
liste, avec quelques bizarreries qui me font un peu peur.



Cela est effectivement nécessaire pour pouvoir se prononcer.

Un exemple :

[Hada (fr-he), 1990]
A/ Actualité (Italie)
A/ Actualité (USA)
A/ Antietamine - VC/ Père des enfants
A/ Antimitamine A/ Diffamation
A/ Crime rituel
A/ Culture - C/ Littérature (par auteur)
A/ Culture - HJ/ Période 6
A/ Culture - S/ Histoire
A/ Histoire - Antietamine
A/ Néo-logisme
A/ Préjugé - JU/ Identité
A/ Protocole des hommes qui savent
A/Profession
C/ Biographie EI/ mamifère
C/ Langue : Ara
C/ Littérature - TB/ Rév – Renouveau
C/ Littérature (bibliographie)
Sheraton : Esprit d'Aventure
Sheraton : test : Un autre mot
DH/ Auto-détermination
DH/ Droit à la vie
DH/ Droit d’asile
DH/ Droit de la personne
DH/ Généralité - C/ Biographie
DH/ Liberté d’expression
DH/Auto-détermination
E/ Manuscrits
E/ A ma mère E/ Personnage
E/ Aces d' Ap - VC/ Mission
E/ On peut encore JU/test des valeurs
E/ Bible - C/ Sheraton - C/ Education
E/ C'est à babord - TB/ Amour -
E/ Corinthe TB/ Liberté
E/ Decision (Un autre test, 1-17 – question 5, 6-22)
E/ Figure bilique – GENEVE
E/ Figure bilique - TO/ Midrash
E/ Lui
E/ Lui - JE/ Jude
E/ Lui - JE/ Paon
E/ Lui - Laique - TB/ Prochain
E/ Lui - Manu
E/ Manu - C/ Histoire - JU/ Ess - JU/ Mes - JU/ Zél
E/ N Test - C/ Bibliographie
E/ N Test - E/ Tarch - RCJC/ Didi
Code : 1789-1945
Code : France : Vivi II Code : France : 1945-2000
EI : Conflit ir-ar
ÉI : Société
EI / Alyah
EI / Pal
EI /Alyah
EI/ Agriculture
EI/ Alyah
EI/ O.L.P.
Histoire : France : 1933-1939
Histoire : France : 1939-1940
Histoire : France : 1941-1944 : Résistance
HJ : France : Nord : 1791-1939
HJ : Période bilique
J/ Capitale - JE/ Liste Sanit - JE/ Archéologie - JE/ Relié - C/ Musée
J/ Internationalisation J/ Ville Site J/ Population
JE/TH/ Sante
JERUMA : Symbolisme
JH/ Slkjkl
JU / Rmlklm
JU Rite
JU/ Identité EI/ mamifère
JU/ Organismes internationaux - JU/ Dias (France) - JU/ Education - DH/
- SR/ Didi inter
JU/ Sexualité - JU/ Ethique - JU/ Mort TB/ Fraternité - VQ/ Sec etamine
: éti soc
RCJC Didi
RCJC Réc SHH Rjjjpr
RCJC/ Didi C/ Biographie
RCJC/ Didi JE/ Juif
RCJC/ Didi JU/ Généralité
RCJC/ Didi RCJC/ Histoire (Jean-Paul II)
RCJC/ Didi - JU/ Hass
RCJC/ Didi - Mission - TB/ Père
RCJC/ Didi - Obstacle
RCJC/ lise (Comité de liaison) RCJC/ Rencontre (Prague, 90) A/
Antimitamine S/ lise - S/ Réflexion S/ ttotologie - S/ Histoire
TB:JU:VC/ Jutesu


--
Henri-Damien LAURENT


Avatar
Jogo
Je ne suis pas sûr que le caractère sépérateur non-visible utilisé est bien
0x0b. Si c'est effectivement le cas, essayez :


while (<>) {
chomp ;
print join(":",
map { /^s*(?:[A-Z]+/s*)?(.*S)s*$/; $1 }
split(/ - |0xb/,$_) )."n" ;
} ;

J'ai fait l'hypothèse que le fait que les chaines recherchées soient sur
une même ligne était significatif. Dans ce cas, comme le schema peut se
répéter sur chaque ligne, il vaut mieux découper chaque ligne (split)
suivant les délimiteurs, avant de chercher une regexp.
Avatar
hdl
Je ne suis pas sûr que le caractère sépérateur non-visible utilisé est bien
0x0b. Si c'est effectivement le cas, essayez :


while (<>) {
chomp ;
print join(":",
map { /^s*(?:[A-Z]+/s*)?(.*S)s*$/; $1 }
split(/ - |0xb/,$_) )."n" ;
} ;

J'ai fait l'hypothèse que le fait que les chaines recherchées soient sur
une même ligne était significatif. Dans ce cas, comme le schema peut se
répéter sur chaque ligne, il vaut mieux découper chaque ligne (split)
suivant les délimiteurs, avant de chercher une regexp.
merci