Expression régulière

Discutez d'informatique ici !
Cliffe
Membre Rationnel
Messages: 961
Enregistré le: 12 Juin 2012, 15:25

Expression régulière

par Cliffe » 09 Avr 2015, 12: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.



Avatar de l’utilisateur
ampholyte
Membre Transcendant
Messages: 3940
Enregistré le: 21 Juil 2012, 09:03

par ampholyte » 09 Avr 2015, 12: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: 961
Enregistré le: 12 Juin 2012, 15:25

par Cliffe » 09 Avr 2015, 12:24

Il peut tout y avoir sauf des chiffres 0-9.

Le premier caractère à gauche (et à droite) ne doivent pas être un chiffre.

Avatar de l’utilisateur
ampholyte
Membre Transcendant
Messages: 3940
Enregistré le: 21 Juil 2012, 09:03

par ampholyte » 09 Avr 2015, 12:26

Tu peux essayer ceci :

Code: Tout sélectionner
[^0-9]*4321[^0-9]*

Cliffe
Membre Rationnel
Messages: 961
Enregistré le: 12 Juin 2012, 15:25

par Cliffe » 09 Avr 2015, 12:30

Fonctionne pas :hein:

Avatar de l’utilisateur
ampholyte
Membre Transcendant
Messages: 3940
Enregistré le: 21 Juil 2012, 09:03

par ampholyte » 09 Avr 2015, 12: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: 961
Enregistré le: 12 Juin 2012, 15:25

par Cliffe » 09 Avr 2015, 13:23

J'ai mis dans Informatique mais j'utilise en réalité un logiciel qui a besoin d'une expression régulière.

Avatar de l’utilisateur
ampholyte
Membre Transcendant
Messages: 3940
Enregistré le: 21 Juil 2012, 09:03

par ampholyte » 09 Avr 2015, 13: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: 961
Enregistré le: 12 Juin 2012, 15:25

par Cliffe » 09 Avr 2015, 14: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.

Avatar de l’utilisateur
WillyCagnes
Membre Transcendant
Messages: 3695
Enregistré le: 21 Sep 2013, 21:58

par WillyCagnes » 09 Avr 2015, 14: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
Merci d'aider cette association
PENSION MILLEPATTES
https://www.facebook.com/Association-millepattes-1723852844561273/

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6490
Enregistré le: 22 Nov 2007, 14:00

par fatal_error » 09 Avr 2015, 15: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: 961
Enregistré le: 12 Juin 2012, 15:25

par Cliffe » 09 Avr 2015, 15: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:

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6490
Enregistré le: 22 Nov 2007, 14:00

par fatal_error » 09 Avr 2015, 15: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]'
6784321abcd4321e
$
;) echo "6784321abcd43212e"|grep -E '[^0-9]4321[^0-9]'
$
la vie est une fête :)

Avatar de l’utilisateur
ampholyte
Membre Transcendant
Messages: 3940
Enregistré le: 21 Juil 2012, 09:03

par ampholyte » 09 Avr 2015, 15: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: 961
Enregistré le: 12 Juin 2012, 15:25

par Cliffe » 09 Avr 2015, 17: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: 1129
Enregistré le: 24 Jan 2010, 23:52

par LeJeu » 10 Avr 2015, 20: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++)

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite