一个java写的正则表达式练习器

 

 

原始位置:http://www.128kj.com/article/article1/22C39C9824035345B04ED080BB1DDDBA.htm?id=3229

 

   可能有人会说现在网上到处都是正则表达式的练习器,我也见过不少,有用html和javascript写的hta应用程序的,也有用C#写的,但是这个用java写的练习器当然是与java有关的哦.里面肯定有源字符串(str)和正则表达式(regex)的输入,只不过输出与其它不一样,输出的是

  • str.split(regex)的结果.

  • str.match(regex)的结果.

          当然还有输出java.util.regex包里的一些使用结果.一般来说对用java的,练习正则有用吧,如果你对java.util.regex不怎么了解,这个代码可能会有点帮助.

 


  源代码如下:
import javax.swing.*;

import java.awt.*;
import java.awt.event.*;
import java.util.regex.*;

public class RegTest extends JFrame implements ActionListener{

/**
* @author hoverlees(好棒)
*/
  JTextField src=null;
  JTextField reg=null;
  JLabel match=null;
  JButton ok=new JButton("确定");
  Box b=null;
  JLabel result=new JLabel(" ");
  JLabel la1=new JLabel();
  JLabel la2=new JLabel();

  / //java.util.regex
  Pattern p=null;

  public RegTest(){
    super("java正则表达式练习");

    src=new JTextField("hoverlees@yahoo.com.cn 好棒e");
    reg=new JTextField("//De");
    match=new JLabel(" ");
    b=Box.createVerticalBox();
    Box b1=Box.createHorizontalBox();
    b1.add(new JLabel(" 源字符串(str):"));
    b1.add(src);
    b1.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
    b.add(b1);
   Box b2=Box.createHorizontalBox();
    b2.add(new JLabel("正则表达式(reg):"));
    b2.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
    b2.add(reg);
    b.add(b2);
    Box b3=Box.createHorizontalBox();
    b3.add(match);

    JLabel jl2=new JLabel("str.match(reg)完全匹配情况:");
    addBox(jl2,match);
    addBox(new JLabel("str.split(reg)结果('|'分隔):"),result);
    addBox(new JLabel("包含部分匹配情况:"),la1);
    addBox(new JLabel("所有部分匹配('|'分隔):"),la2);
    Box b5=Box.createHorizontalBox();
    b5.add(ok);
    b.add(b5);
    ok.addActionListener(this);
    this.getContentPane().add(b);
    this.setDefaultCloseOperation(3);
    this.pack();
    this.setSize(600,this.getHeight());
    this.getRootPane().setDefaultButton(ok);
  }

private void addBox(JComponent o1,JComponent o2){
   Box temp=Box.createHorizontalBox();
   temp.add(o1);
   if(o2!=null) temp.add(o2);
   
    temp.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
    b.add(temp);
    temp.add(Box.createHorizontalGlue());
  }


   public void actionPerformed(ActionEvent e){
     match.setText(src.getText().matches(reg.getText()) ? "true":"false");
    String[] str=src.getText().split(reg.getText());
    StringBuilder sb=new StringBuilder();
    for(int i=0;i<str.length;i++){
     sb.append(str[i]);
     if(i!=str.length-1) sb.append("|");
   }

    result.setText(sb.toString());
    p=Pattern.compile(reg.getText());
    Matcher m=p.matcher(src.getText());
    la1.setText(m.find() ? "true":"false");
    StringBuilder sb2=new StringBuilder();
    sb2.append(m.group());
    while(m.find()){
    sb2.append("|");
    sb2.append(m.group());
   }

    la2.setText(sb2.toString());
  }

   public static void main(String[] args) {
    try {
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (InstantiationException e) {
        // TODO Auto-generated catch block
       e.printStackTrace();
    } catch (IllegalAccessException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (UnsupportedLookAndFeelException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
   
      new RegTest().setVisible(true);
   }

}

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值