Se connecter avec
S'enregistrer | Connectez-vous

Générateur de REGEX ?

Dernière réponse : dans Programmation
Lassé par la pub ? Créez un compte

en gros tu rentres dans un champ le "texte" que tu veux recuperer, et ensuite le generateur de genere une REGEX valide pour pouvoir recuperer le "texte" donné ...
J'ai pas envie de réinventer la roue donc si ca existe je veux bien, sinon je suis partis pour develloper .....
Expert Programmation

Le problème, c'est qu'il peut y en avoir des centaines de milliers des REGEXP valides pour un texte donné.

Exemple, je donne le mot "bonjour".
Je pourrais avoir comme REGEXP :
(.*)+
bon(.*)+
(.*)+jour

etc...

ça à autant de sens que de dire, comment faire un générateur de mots
->soit ça génère des trucs aléatoires donc peu d'intérêts (sauf pour des mots de passe)
->soit ça s'appuie sur un dictionnaire, donc ça ne gère que des cas prédéfinis, dans ce cas on appelle ça une librairie

Pourquoi vous dites que c'est impossible ?

Je penses faire un système comme ceci :

L'utilisateur saisie plusieurs exemples : texte source et le résultat qu'il attend , et en fonction de ça trouver la regex qui vérifie la condition...

Voila je vais essayer de me pencher dessus ... J'ai déja commencer à y réfléchire et je dois dire que c'est pas tellement évident , mais je suis persuadé que ça reste faisable ....
Expert Programmation

Impossible parce que le langage [Sigma] à définir (une expression régulière est un langage, au sens mathématique), ainsi que son alphabet (toujours sens mathématiques) ne peuvent pas être définis à partir d'un simple échantillon de mots [Sigma*] (car ce n'est pas lui qui dénifit le langage).
[Sigma] est l'ensemble de tous les mots de ton langage. Ton échantillon de mots [Sigma*] est inclus dans [Sigma], mais inversement pas forcément. Donc, à partir de [Sigma*], tu ne peux pas définir [Sigma]. En clair, à partir de ton échantillon de mot, tu ne peux pas définir une expression régulière.

En pratique
- soit tu restreins trop le langage, ([Sigma généré] proche de [Sigma*]) donc il existe un mot X appartement à [Sigma] et qui n'appartient pas à [Sigma généré]
- soit tu ne restreins pas assez le langage, alors il existe un mot X appartenant à [Sigma généré] qui n'appartient pas à [Sigma]
- soit tu as beaucoup de chance (chance en réalité corrélée par un contexte).

Pour simplifier, lorsque tu vas faire ta recherche:
- soit tu restreins trop le langage, et tu oublies des mots valides dans ton expression
- soit tu ne te restreins pas assez, et tu valides des mots qui ne devraient pas l'être
- soit tu trouves un contexte particulier qui te permet d'avoir un peu chance (mais sans garantie mathématique que le résultat est correct, au contraire).

En bref, oublie ton générateur de regex que s'il était faisable il serait déjà fait...

Y'a pleins d'autres trucs à programmer en plus, comme un générateur de méga insultes super longue à partir d'un dictionnaire (ce n'est qu'un exemple...)

MoOx_t a dit :

Y'a pleins d'autres trucs à programmer en plus, comme un générateur de méga insultes super longue à partir d'un dictionnaire (ce n'est qu'un exemple...)


Tu te crois drole ? :sleep: 

PS : j'ai laché l'affaire du générateur de regex ^^

y'a un autre truc qu'un generateur, en gros tu demandes la chaine a "regexer", et tu poses plein de questions, et ensuite tu peux construire la REGEX, c'est plus trop un générateur mais un aide-REGEX ....
Ceux que ca tente ^^

Ahh ahh ca me fait rire :) 
Un ordinateur c'est con ..
Et pour comprendre mieux ce à quoi tu veux t'attaquer, sans le jargon mathématique) considère l'exemple suivant :

Je souhaite capturer les salutations :
--> Bonjour !
--> Bonjour machin !
--> Salut.
--> Hi !!!!

Maintenant pour se mettre au niveau de l'ordinateur et sentir la difficulté,
remplace chaque caractère par son suivant dans l'alphabet (== alphabet ASCII)
T'obtiens des suites incompréhensibles de caractères ...
Comment veux tu deviner ou se trouve les zones ou des caractères (et lesquels ?) qui peuvent se trouver en quantité illimité ?
En gros voici un autre probleme tel que l'ordinaeur le reçoit (la flemme de faire ce que j'ai dit XD avec mon premier exemple) :

--> efe grgre ga !
--> gr ezm grr
--> gr za glprr

Amuses toi pour essayer de trouver du sens ... !
Petite remarque : A une autre echelle, si on considérait chaque mot comme une lettre on pourrait faire ce que tu veux pour les langues étrangère.. Ca serait chouette un programme qui peut deviner quel suite mots on a le droit de mettre entre deux mots :D  !

Sérieusement, allez lire la doc des regexp ...
C'est franchement pas la mort à comprendre.
Et la nature vous à doté d'un cerveau, utilisez le !
Bande de flemmard :p pp (moi le premier)

Après je comprend que certaines regexps ou parties de regexp soient difficiles à trouver.
Exemple :
Trouver la regexp qui cherche le texte entre "<div " et "</div>" de façon non gourmande.
"Non gourmande" signifie qui va trouver deux résultats pour "<div>foo</div><div>bar</div>" et non pas un seul !
La partie qui cherche la première fermeture du </div> n'est pas triviale. Il faut donc faire attention.
Une source que j'ai écrite qui permet de générer ce morceau assez ennuyeux :
http://www.cppfrance.com/codes/GENERATION-EXPRESSION-RE...
(google generer regexp manger --> 1er lien)


PS : J'utilise un nom d'utilisateur accessible par tout le monde !!!
C'est c****-c****** d'avoir à s'enregistrer sur tous les sites de nos jours ...
Tout ça pour dire que ce n'est pas forcément "moi" qui répondrai :) 

bonjour tout le monde

allor je post un message concernant les REGEX
jexplique mon probleme

jai trouve sur le net un logiciel pour extraire les adresse emails d'un ficher texte ( biensur avec la source )
ce logiciel et codé en C#

donc dans la source il y a une partie REGEX pour donné les ordre au logiciel pour extraire les adresse !

mais moi je veut que le logiciel me sorte pas les adresse emails mais certain code !
sous cette forme : M4312g56

- commence toujour par un M
- a toujour 8 caractaire en tous
- a toujour 6 chiffre et 1 lettre sans compté le M
- la lettre ici le g mais ki peut etre nimportekel lettre de lalphabet peut ce trouver nimporte ou dans le code APRE LE M
ex : M34g5434 , M678545g

donc je voudrais avoir lexpression reguliere pour l'introduire dans la source de mon logiciel a la place de lexpression pour extraire les adresse email :) 
sa fait 1 semaine que je me casse la tete decu et je ne trouve pas si quelqun pourrai maider sa serai sympa :) 

merci bocoup

a bientot mon msn : ***@hotmail.fr

cordialement

Modération : j'ai supprimé ton adresse mail
Expert Programmation

M([0-9][0-9][0-9][0-9][0-9][0-9][a-z]|[0-9][0-9][0-9][0-9][0-9][a-z][0-9]|[0-9][0-9][0-9][0-9][a-z][0-9][0-9]|[0-9][0-9][0-9][a-z][0-9][0-9][0-9]|[0-9][0-9][a-z][0-9][0-9][0-9][0-9]|[0-9][a-z][0-9][0-9][0-9][0-9][0-9]|[a-z][0-9][0-9][0-9][0-9][0-9][0-9])

merci omar ca marche nikel

peut tu me donner lexpression pour extraire ces codes la maintenant

32gf2343

-toujour 8 caractaire
-6 chifre ( il peuvent etre nimporte ou dans le code
- toujour 2 letre ki peut etre aussi nimporte ou dans le code


voila merci de me repondre omar
Lassé par la pub ? Créez un compte
Tom's guide dans le monde