Vérifier si une chaîne suit une expression régulière

Résolu
sasuske Messages postés 2 Date d'inscription mardi 14 janvier 2014 Statut Membre Dernière intervention 3 mars 2014 - Modifié par cs_Julien39 le 10/03/2014 à 09:32
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 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();
    }
}

1 réponse

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
Modifié par cs_Julien39 le 10/03/2014 à 09:34
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)*")){
//...
}
1
Rejoignez-nous