Vérifier si une chaîne suit une expression régulière [Résolu]

sasuske 2 Messages postés mardi 14 janvier 2014Date d'inscription 3 mars 2014 Dernière intervention - 3 mars 2014 à 10:59 - Dernière réponse : cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscriptionModérateurStatut 17 mai 2018 Dernière intervention
- 3 mars 2014 à 15:43
Bonjour
svp..j'ai crée un petit code programme java qui a pour but de créer une interface graphique qui permet de tester si un mot vérifie une expression régulière.
L'interface comporte 4 boutons et 2 JTextfield : une pour la saisie du mot et l'autre pour l'affichage du résultat . Les boutons sont configurées comme suit:

premier bouton-------->vérifie l'expression "(aa)*a"
deuxième bouton ----->vérifie l'expression "{aa,ab}"
trosième bouton------->vérifie l'expression "(ab)*"
quatrième bouton------>vérifie l'expression "b*ab*"

je n'aarive pas à faire que deux boutons ("(aa)*a") et ( "{aa,ab}") et j'espère que vous pouvez m'aider à completer mon code

voici le code:
package afd;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.UIManager;
public class Expression1 {
 private JFrame f = new JFrame();
 private JPanel p =new JPanel();
 private JTextField t1 = new JTextField();
 private JTextArea t2 = new JTextArea();
 private JButton b1= new JButton("(aa)*a");
 private JButton b2= new JButton("b*ab*");
 private JButton b3= new JButton("(ab)*");
 private JButton b4= new JButton("a°(a,b)");
 private Container conteneur = new Container();
 private GridLayout disposition = new GridLayout(4, 1);  
    private FlowLayout dispositionBoutons = new FlowLayout();
    JTextField txtScreen = new JTextField();
    JPanel boutons = new JPanel();
    public Expression1(){
  f.setTitle("vérification ER");
  f.setSize(550,550);
  f.setLocationRelativeTo(null);
  f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  f.setContentPane(p);
     conteneur = f.getContentPane();
    
       boutons.add(this.b1);
       boutons.add(this.b2);
       boutons.add(this.b3);
       boutons.add(this.b4);
     
       conteneur.setLayout(dispositionBoutons);
     
       conteneur.add(this.t1);
       conteneur.add(boutons);
       f.setVisible(true);
 }
    class RBActionListener implements ActionListener {

  public void actionPerformed(ActionEvent e) {
   int i = 0;
   JButton btn = (JButton) e.getSource();
   if (btn.getText().equalsIgnoreCase("(aa)*a")) {
   String S = t1.getText();
    while (i<S.length()){
    if ((i % 2)==0)
                  
   
   
   }if (btn.getText().equalsIgnoreCase("b*ab*")){
    
    
   }
  if (btn.getText().equalsIgnoreCase("(ab)*")){
  
   
  }if (btn.getText().equalsIgnoreCase("a°(a,b)")){
   
  }
   }
    }
    
    public static void main(String []args)
    {
     JFrame.setDefaultLookAndFeelDecorated(true);
  System.setProperty("Quaqua.tabLayoutPolicy", "wrap");
  try {
   UIManager
     .setLookAndFeel("ch.randelshofer.quaqua.leopard.Quaqua15LeopardCrossPlatformLookAndFeel");
  } catch (Exception e) {

  }
     new Expression();
    }
}

Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscriptionModérateurStatut 17 mai 2018 Dernière intervention - Modifié par cs_Julien39 le 10/03/2014 à 09:34
1
Merci
Salut,

tu utilises une méthode qui ne travaille pas sur les expressions régulières.

Pour vérifier si une chaîne suit une expression régulière en java, on utilise la méthode matches de la classe String :
boolean result="chaine".matches("expressionReguliere);


Utilises matches et ça fonctionnera :
if (btn.getText().matches("(ab)*")){
//...
}

Merci cs_Julien39 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de cs_Julien39

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.