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

Messages postés
2
Date d'inscription
mardi 14 janvier 2014
Statut
Membre
Dernière intervention
3 mars 2014
-
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 

1 réponse

Meilleure réponse
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
246
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)*")){
//...
}

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 194 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Julien39