package javacodebook.regex.checker; import java.util.regex.*; /** * Ein GUI zum Überprüfen von regulären Ausdrücken. */ public class RegexChecker extends javax.swing.JFrame { public RegexChecker() { initComponents(); } private void initComponents() { java.awt.GridBagConstraints gridBagConstraints; jPanel1 = new javax.swing.JPanel(); buttonClose = new javax.swing.JButton(); jSplitPane1 = new javax.swing.JSplitPane(); Conent = new javax.swing.JPanel(); jScrollPane2 = new javax.swing.JScrollPane(); textResult = new javax.swing.JTextArea(); buttonCheck = new javax.swing.JButton(); textRegex = new javax.swing.JTextField(); jLabel1 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jPanel2 = new javax.swing.JPanel(); jScrollPane1 = new javax.swing.JScrollPane(); textSource = new javax.swing.JTextArea(); jLabel2 = new javax.swing.JLabel(); setTitle("Regex-Checker"); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { exitForm(evt); } }); jPanel1.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT)); buttonClose.setText("Schlie\u00dfen"); buttonClose.setName(""); buttonClose.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonCloseActionPerformed(evt); } }); jPanel1.add(buttonClose); getContentPane().add(jPanel1, java.awt.BorderLayout.SOUTH); jSplitPane1.setBorder(new javax.swing.border.EmptyBorder(new java.awt.Insets(1, 1, 1, 1))); jSplitPane1.setResizeWeight(0.5); Conent.setLayout(new java.awt.GridBagLayout()); textResult.setColumns(20); textResult.setEditable(false); textResult.setRows(10); jScrollPane2.setViewportView(textResult); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 3; gridBagConstraints.gridwidth = 2; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(5, 5, 0, 5); gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 0.5; gridBagConstraints.weighty = 1.0; Conent.add(jScrollPane2, gridBagConstraints); buttonCheck.setText("Test"); buttonCheck.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonCheckActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5); Conent.add(buttonCheck, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 0); gridBagConstraints.weightx = 0.5; Conent.add(textRegex, gridBagConstraints); jLabel1.setText("Regul\u00e4rer Ausdruck"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.insets = new java.awt.Insets(5, 8, 0, 0); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; Conent.add(jLabel1, gridBagConstraints); jLabel3.setText("Suchergebnis"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; gridBagConstraints.insets = new java.awt.Insets(3, 8, 0, 0); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; Conent.add(jLabel3, gridBagConstraints); jSplitPane1.setRightComponent(Conent); jPanel2.setLayout(new java.awt.GridBagLayout()); textSource.setColumns(20); textSource.setTabSize(10); jScrollPane1.setViewportView(textSource); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5); gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; jPanel2.add(jScrollPane1, gridBagConstraints); jLabel2.setText("Text"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(5, 8, 5, 5); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; jPanel2.add(jLabel2, gridBagConstraints); jSplitPane1.setLeftComponent(jPanel2); getContentPane().add(jSplitPane1, java.awt.BorderLayout.CENTER); pack(); } // Durchführung des Überprüfung des regulären Ausdruckes. private void buttonCheckActionPerformed(java.awt.event.ActionEvent evt) { // Erst einmal den regulären Ausdruck und den Beispieltext auslesen String regex = textRegex.getText(); String source = textSource.getText(); try { // Den regulären Ausdruck kompilieren und auf den Text anwenden. Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(source); boolean found = false; // Die gefundenen Textstellen auflisten StringBuffer result = new StringBuffer("Ergebnis der Suche:\n"); while(matcher.find()) { found = true; result.append("\nGefundene Stelle (Zeichen "); result.append(matcher.start() + " - " + matcher.end()); result.append("): " + matcher.group(0) + "\n"); for (int i=1; i<=matcher.groupCount(); i++) { result.append("Gruppe " + i + ": " + matcher.group(i) + "\n"); } } if (found) textResult.setText(result.toString()); else textResult.setText("Es wurde keine Stelle im Text gefunden!"); } catch (Exception e) { textResult.setText("FEHLER: " + e.getMessage()); } } private void buttonCloseActionPerformed(java.awt.event.ActionEvent evt) { System.exit(0); } private void exitForm(java.awt.event.WindowEvent evt) { System.exit(0); } public static void main(String args[]) { RegexChecker checker = new RegexChecker(); checker.setSize(600, 400); checker.show(); } private javax.swing.JScrollPane jScrollPane1; private javax.swing.JPanel Conent; private javax.swing.JButton buttonClose; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel2; private javax.swing.JSplitPane jSplitPane1; private javax.swing.JPanel jPanel2; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JTextField textRegex; private javax.swing.JButton buttonCheck; private javax.swing.JTextArea textSource; private javax.swing.JPanel jPanel1; private javax.swing.JTextArea textResult; }