java Swing实现的正则表达式测试工具
发布时间:2020-05-24 15:25:58 所属栏目:Java 来源:互联网
导读:java Swing实现的正则表达式测试工具
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 import java.awt.GridLayout;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
/**
* Standalone Swing GUI application for demonstrating REs. <br/>TODO: Show the
* entire match,and $1 and up as captures that matched.
*/
public class GuiDemo extends JPanel {
protected Pattern pattern;
protected Matcher m;
protected JTextField pattTF,strTF;
protected JCheckBox compiledOK;
protected JRadioButton match,find,findAll;
protected JTextField mTF;
/**
* "main program" method - construct and show
*/
public static void main(String[] av) {
JFrame f = new JFrame("GuiDemo");
f.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
GuiDemo comp = new GuiDemo();
f.setContentPane(comp);
f.pack();
f.setLocation(200,200);
f.setVisible(true);
}
/**
* Construct the REDemo object including its GUI
*/
public GuiDemo() {
super();
JPanel top = new JPanel();
top.add(new JLabel("Pattern:",JLabel.RIGHT));
pattTF = new JTextField(20);
pattTF.getDocument().addDocumentListener(new PattListener());
top.add(pattTF);
top.add(new JLabel("Syntax OK?"));
compiledOK = new JCheckBox();
top.add(compiledOK);
ChangeListener cl = new ChangeListener() {
@Override
public void stateChanged(ChangeEvent ce) {
tryToMatch();
}
};
JPanel switchPane = new JPanel();
ButtonGroup bg = new ButtonGroup();
match = new JRadioButton("Match");
match.setSelected(true);
match.addChangeListener(cl);
bg.add(match);
switchPane.add(match);
find = new JRadioButton("Find");
find.addChangeListener(cl);
bg.add(find);
switchPane.add(find);
findAll = new JRadioButton("Find All");
findAll.addChangeListener(cl);
bg.add(findAll);
switchPane.add(findAll);
JPanel strPane = new JPanel();
strPane.add(new JLabel("String:",JLabel.RIGHT));
strTF = new JTextField(20);
strTF.getDocument().addDocumentListener(new StrListener());
strPane.add(strTF);
strPane.add(new JLabel("Matches:"));
mTF = new JTextField(3);
strPane.add(mTF);
setLayout(new GridLayout(0,1,5,5));
add(top);
add(strPane);
add(switchPane);
}
protected void setMatch(boolean b) {
if (b) {
mTF.setText("Yes");
} else {
mTF.setText("No");
}
}
protected void setMatch(int n) {
mTF.setText(Integer.toString(n));
}
protected void tryToCompile() {
pattern = null;
try {
pattern = Pattern.compile(pattTF.getText());
m = pattern.matcher("");
compiledOK.setSelected(true);
} catch (PatternSyntaxException ex) {
compiledOK.setSelected(false);
}
}
protected boolean tryToMatch() {
if (pattern == null) {
return false;
}
m.reset(strTF.getText());
if (match.isSelected() && m.matches()) {
setMatch(true);
return true;
}
if (find.isSelected() && m.find()) {
setMatch(true);
return true;
}
if (findAll.isSelected()) {
int i = 0;
while (m.find()) {
++i;
}
if (i > 0) {
setMatch(i);
return true;
}
}
setMatch(false);
return false;
}
/**
* Any change to the pattern tries to compile the result.
*/
class PattListener implements DocumentListener {
@Override
public void changedUpdate(DocumentEvent ev) {
tryToCompile();
}
@Override
public void insertUpdate(DocumentEvent ev) {
tryToCompile();
}
@Override
public void removeUpdate(DocumentEvent ev) {
tryToCompile();
}
}
/**
* Any change to the input string tries to match the result
*/
class StrListener implements DocumentListener {
@Override
public void changedUpdate(DocumentEvent ev) {
tryToMatch();
}
@Override
public void insertUpdate(DocumentEvent ev) {
tryToMatch();
}
@Override
public void removeUpdate(DocumentEvent ev) {
tryToMatch();
}
}
}
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
