Expression régulière
Discutez d'informatique ici !
-
Cliffe
- Membre Rationnel
- Messages: 967
- Enregistré le: 12 Juin 2012, 14:25
-
par Cliffe » 09 Avr 2015, 11:08
Bonjour,
Je cherche le nombre 4321 dans un texte. Il doit être isolé, je ne veux pas par exemple : 55432166. Aucune chiffre à gauche ni à droite.
Merci.
-
ampholyte
- Membre Transcendant
- Messages: 3940
- Enregistré le: 21 Juil 2012, 08:03
-
par ampholyte » 09 Avr 2015, 11:18
Bonjour,
Quand tu dis isolé, est-ce que tu veux dire avec un espace de chaque côté ?
Est-ce qu'il peut être en début ou fin de chaine ?
Est-ce qu'il peut contenir d'autres caractères à ces bornes "A4321B" ?
-
Cliffe
- Membre Rationnel
- Messages: 967
- Enregistré le: 12 Juin 2012, 14:25
-
par Cliffe » 09 Avr 2015, 11:24
Il peut tout y avoir sauf des chiffres 0-9.
Le premier caractère à gauche (et à droite) ne doivent pas être un chiffre.
-
ampholyte
- Membre Transcendant
- Messages: 3940
- Enregistré le: 21 Juil 2012, 08:03
-
par ampholyte » 09 Avr 2015, 11:26
Tu peux essayer ceci :
- Code: Tout sélectionner
[^0-9]*4321[^0-9]*
-
Cliffe
- Membre Rationnel
- Messages: 967
- Enregistré le: 12 Juin 2012, 14:25
-
par Cliffe » 09 Avr 2015, 11:30
Fonctionne pas :hein:
-
ampholyte
- Membre Transcendant
- Messages: 3940
- Enregistré le: 21 Juil 2012, 08:03
-
par ampholyte » 09 Avr 2015, 11:35
A mon avis, il serait plus simple d'effectuer la vérification "à la main" (dans une fonction).
Il te suffit de chercher toutes les occurences de 4321 et de vérifier que le caractère avant et après n'est pas un chiffre.
En quel langage tu as besoin de cela ?
-
Cliffe
- Membre Rationnel
- Messages: 967
- Enregistré le: 12 Juin 2012, 14:25
-
par Cliffe » 09 Avr 2015, 12:23
J'ai mis dans Informatique mais j'utilise en réalité un logiciel qui a besoin d'une expression régulière.
-
ampholyte
- Membre Transcendant
- Messages: 3940
- Enregistré le: 21 Juil 2012, 08:03
-
par ampholyte » 09 Avr 2015, 12:31
Est-ce que cela peut se trouver en début / fin de chaine ?
Aurais-tu un panel d'exemple histoire d'avoir tous les cas possibles stp ?
-
Cliffe
- Membre Rationnel
- Messages: 967
- Enregistré le: 12 Juin 2012, 14:25
-
par Cliffe » 09 Avr 2015, 13:09
Je dois retrouver *4231* dans un fichier.
Les étoiles peuvent être tous sauf des chiffres (caractère null y compris).
exemple :
abc 4231
4231
abc4231
@4231|
abc42315 => pas bon.
mon problème, c'est lorsque je recherche 4231 il me retourne des chaine du genre 11542315647, donc je dois passé par une expression régulière.
-
WillyCagnes
- Membre Transcendant
- Messages: 3754
- Enregistré le: 21 Sep 2013, 20:58
-
par WillyCagnes » 09 Avr 2015, 13:20
bjr
quel logiciel utilises-tu pour chercher 1234?
si c'est dans Excel, je sais programmer en VBA pour rechercher tous les 1234 répondant à tes critères avec tes exemples
-
fatal_error
- Modérateur
- Messages: 6610
- Enregistré le: 22 Nov 2007, 13:00
-
par fatal_error » 09 Avr 2015, 14:02
/[^0-9]4321[^0-9]/
note: ne marchera pas si c'est en tout début ou tout à la fin du fichier
la vie est une fête
-
Cliffe
- Membre Rationnel
- Messages: 967
- Enregistré le: 12 Juin 2012, 14:25
-
par Cliffe » 09 Avr 2015, 14:13
fatal_error a écrit:/[^0-9]4321[^0-9]/
note: ne marchera pas si c'est en tout début ou tout à la fin du fichier
Fonctionne pas :help:
-
fatal_error
- Modérateur
- Messages: 6610
- Enregistré le: 22 Nov 2007, 13:00
-
par fatal_error » 09 Avr 2015, 14:14
ben t'as du écrire du caca, ca dépend ce que supporte ton parseur de regex
ex en bash
$
echo "6784321abcd4321e"|grep -E '[^0-9]4321[^0-9]'
6784321abcd
4321e
$
echo "6784321abcd43212e"|grep -E '[^0-9]4321[^0-9]'
$
la vie est une fête
-
ampholyte
- Membre Transcendant
- Messages: 3940
- Enregistré le: 21 Juil 2012, 08:03
-
par ampholyte » 09 Avr 2015, 14:16
Il suffirait de rajouter un | dans la regex en fait.
- Code: Tout sélectionner
[^0-9]4321[^0-9] || ^4321[^0-9] || ^[0-9]4321$
-
Cliffe
- Membre Rationnel
- Messages: 967
- Enregistré le: 12 Juin 2012, 14:25
-
par Cliffe » 09 Avr 2015, 16:12
Voila un exemple de message :
MSH|^~\&|DXLAB|Laboratoire|RESHL7|HC MED. GERIATRIQUE 4321 MY^4321|2015043215739||OUL^R22^OUL_R22|2015040823573921024321
-
LeJeu
- Membre Irrationnel
- Messages: 1141
- Enregistré le: 24 Jan 2010, 22:52
-
par LeJeu » 10 Avr 2015, 19:03
Cliffe a écrit:Voila un exemple de message :
MSH|^~\&|DXLAB|Laboratoire|RESHL7|HC MED. GERIATRIQUE 4321 MY^4321|2015043215739||OUL^R22^OUL_R22|2015040823573921024321
Je suis d'accord avec Fatal et son expression, on peut la compléter pour que cela fonctionne en début et fin de ligne
par exemple avec :
(^|[^0-9])(4321)([^0-9]|$)
les groupes entre () permettent par exemple de faire un replace de 4321 par 4567
en utilisant
($1)4567($3) pour la chaîne de replace
ce qui donne pour la chaîne en exemple :
MSH|^~\&|DXLAB|Laboratoire|RESHL7|HC MED. GERIATRIQUE 4567 MY^4567|2015043215739||OUL^R22^OUL_R22|20150408235 73921024321
(testé sous Notepad++)
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 6 invités