IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Expression non régulière


Sujet :

Algorithmes et structures de données

  1. #1
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut Expression non régulière
    Bonjour,

    Java propose des méthodes pour pouvoir traiter des expressions régulières.

    Mais je recherche un ou des exemples d'expressions qui ne sont pas des expressions régulières.

    Avez-vous des idées ?

    Merci d'avance.
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Je crois que tu confond. Dans

    l'expression régulière c'est b, pas a. Je vois donc pas dans ce contexte ce que tu appellerais un "expression non régulière", hormis un string b qui déclencherais une exception car n'étant pas correcte!

    exemple de valeur incorrecte: b="((a)"; // nombre de parenthèses erroné

  3. #3
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    Bonjour,

    je ne suis pas sûr de bien comprendre ta question.
    Une expression peut être régulière si elle réponds à certains critères de syntaxe, mais elle peut aussi être utilisée comme expression "normale".

    Après certaines expression ne peuvent pas être des expressions régulières, comme:

  4. #4
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Je crois que tu confond. Dans

    l'expression régulière c'est b, pas a. Je vois donc pas dans ce contexte ce que tu appellerais un "expression non régulière", hormis un string b qui déclencherais une exception car n'étant pas correcte!

    exemple de valeur incorrecte: b="((a)"; // nombre de parenthèses erroné
    Non, non, je ne juge pas le code mais la possibilité d'évaluer sans ambiguïté une expression.

    Par exemple, peut-on évaluer PI sachant que la grandeur de sa partie décimale vers plus l'infini ?

    b="((a)" peut être en soit une expression régulière, en effet je peux très bien recherche la chaine suivante :

    En fait dans ce cas cela dépend de l'alphabet et de la grammaire reconnue.

    Le débat est lancé.

    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    non, ((a) n'est pas un expression régulière. L'api javadoc est très claire sur ce qu'est une expression régulière. Et Pi n'a rien à voir avec çà . De plus il n'y a pas d'ambiguité sur la grammaire. Tu veux savoir quoi au juste????

  6. #6
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    non, ((a) n'est pas un expression régulière?
    Ah bon ! Je ne peux pas faire une recherche de la sous-chaine ((a) appartenant à une chaine ?

    Cela m'étonnerait beaucoup.

    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Tu peux le faire, mais l'expression régulière associée est alors:

    \(\(a\)

  8. #8
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Citation Envoyé par dingoth Voir le message
    Tu peux le faire, mais l'expression régulière associée est alors:

    \(\(a\)
    Je n'ai jamais dis le contraire.

    Ma question est de trouver un contre exemple d'une expression régulière : cela ne semble pas évident du tout puisque je n'ai pas de réponse pour cela.

    A bientôt.
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  9. #9
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Ce serait quoi une "expression non régulière" pour toi ?
    Pour moi cela n'a pas trop se sens


    a++

  10. #10
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Salut,


    Ce serait quoi une "expression non régulière" pour toi ?
    Pour moi cela n'a pas trop se sens


    a++
    Réponse simpliste mais pourquoi faire compliqué quand on peut faire simple : http://fr.wikipedia.org/wiki/Langage_rationnel

    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  11. #11
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    Tu ne nous apprend rien avec ce lien.
    Ce qu'adiGuba voulais savoir (comme les auters ayant répondu ici), c'est :
    Qu'est-ce que tu veux réellement savoir?

    Si tu soutiens que ((a) est une expression régulière, alors tout est expression régulière...

  12. #12
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Citation Envoyé par Deaf Voir le message
    Tu ne nous apprend rien avec ce lien.
    Ce qu'adiGuba voulais savoir (comme les auters ayant répondu ici), c'est :
    Qu'est-ce que tu veux réellement savoir?

    Si tu soutiens que ((a) est une expression régulière, alors tout est expression régulière...
    Absolument faux : tout ne peux pas être interprété par un Automate Fini Déterministe (AFD), de même à quoi cela servirait-il de démontrer mathématiquement qu'une expression est régulière s'il n'existait pas de contre exemple ?

    C'est justement un contre exemple que je cherche.

    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  13. #13
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Mister Nono Voir le message
    C'est justement un contre exemple que je cherche.
    Tu recherches des exemples d'ensembles qui ne peuvent pas être représentés par une expression régulière ? Pourquoi ne pas l'avoir dit plus tôt au lieu de parler d'expression non régulière...

    Si tu veux des réponses claires il faut que la question le soit tout autant...




    Après des contres exemples tu peux en avoir plein. Par exemple si les nombres de la table de 5 est facilement représentable ( "\d*[05]" ), ce n'est pas le cas de la table de 6 qui n'est pas représentable avec une expression régulière...

    a++

  14. #14
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    adiguba: si c'est ça ce qu'il cherche, c'est ce que j'ai dit au début, il confond l'expression régulière et l'ensemble testé. Une expression régulière en java, c'est çà, point

    http://java.sun.com/j2se/1.4.2/docs/...x/Pattern.html

  15. #15
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    adiguba: si c'est ça ce qu'il cherche, c'est ce que j'ai dit au début, il confond l'expression régulière et l'ensemble testé. Une expression régulière en java, c'est çà, point

    http://java.sun.com/j2se/1.4.2/docs/...x/Pattern.html
    NON, NON et NON, tu n'as vraiment pas compris la question initiale.

    J'ai trouvé une réponse tout à fait satisfaisant sur le site du CNAM qui indique ceci dans un de ses cours :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Parmi les langages qui ne peuvent pas être d´écrits par automates finis, voici quelques exemples classiques :
    – les chaînes qui ont le même nombre de a que de b.
    – les chaînes bien parenthésées (avec une parenthèse fermante pour chaque ouvrante et une bonne imbrication des parenthèses).
    L'URL du cours est http://deptinfo.cnam.fr/~barthe/NFP108/poly-automates.pdf

    Bon cours et à bientôt.
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  16. #16
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Mister Nono Voir le message
    NON, NON et NON, tu n'as vraiment pas compris la question initiale.
    En même temps la question initiale est tout sauf clair...

    a++

  17. #17
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Effectivement, ce ne sont des pas des automates finis, mais cela n'en fait pas des expressions non-rationnelles.

    Si tu veux en savoir davantage, je t'invite à lire la page Wikipédia à ce sujet: http://fr.wikipedia.org/wiki/Langage_formel et son équivalent anglais, bien plus complet.

  18. #18
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    apparement la question n'a rien a voir avec les expression régulière en java. Si tu cherche des exemples d'ensembles qui ne peuvent pas être défini par des regexp, je donnerais celle-ci, assez courrament mal compris dans ces forum:

    une adresse email respectant le RFC 5322

    Je ne connais aucune regexp à ce jour capable de valider correctement une addresse email suivant ce RFC

  19. #19
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 373
    Points : 23 629
    Points
    23 629
    Par défaut
    Il y a un cas typique de langage non régulier : les langages récursifs (auto-contenus).

    Par exemple, il est impossible d'écrire une expression régulière qui serve de validateur HTML, la page entière étant considérée valide si l'expression arrive à retrouver la page entière. Il faut un automate à pile pour le faire, ce qui fait passer les langages récursifs dans la catégorie 2 de la classification de Chomsky.

    Ceci s'explique assez facilement par le fait que l'on veuille retrouver exactement le même nombre de balises fermantes que de balises ouvrantes et que donc, pour cela, il faut les compter. Comme leur nombre est potentiellement infini, ce n'est pas possible avec un automate fini ordinaire.

    On note toutefois que si on fixe un nombre maximum de balises imbriquées, alors il est possible d'énumérer tous les cas possibles, et donc de dresser un automate fini, ce qui rend le langage à nouveau régulier. Par contre, l'expression qui le décrit risque de faire plusieurs méga-octets et ça ne vaudra vraiment pas la peine. :-)

  20. #20
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Il y a un cas typique de langage non régulier : les langages récursifs (auto-contenus)...
    Merci Obsidian pour cette explication.

    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. expression non vu par IE
    Par pmoury06 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/03/2009, 11h17
  2. LEFT JOIN expression non supportee
    Par Tymk dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 04/06/2008, 10h37
  3. Réponses: 3
    Dernier message: 18/10/2007, 16h30
  4. Contourner une expression non définie
    Par TicTac75 dans le forum Access
    Réponses: 3
    Dernier message: 20/02/2007, 18h52
  5. Réponses: 4
    Dernier message: 22/06/2006, 10h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo