import javax.swing.*;
import javax.swing.text.DefaultHighlighter;
import javax.swing.text.BadLocationException;
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.HeadlessException;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
/**
* 测试 Java 正则表达式
*/
public class RegTester {
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
e.printStackTrace();
}
new RegTesterFrame().setVisible(true);
}
}
class RegTesterFrame extends JFrame {
private JTextField textbox = new JTextField(); // 包含测试文本的文本域
private JTextArea textarea = new JTextArea(); // 包含正则表达式的文本框
private RegTesterFrame thisFrame = this;
private DefaultHighlighter.DefaultHighlightPainter highlightPainter =
new DefaultHighlighter.DefaultHighlightPainter(Color.green);
// 构造方法
RegTesterFrame() throws HeadlessException {
super("测试 Java 正则表达式");
setSize(500, 300);
setLocation(300, 100);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setupComponents();
}
// 初始化控件
private void setupComponents() {
setupBorder();
JPanel topPanel = new JPanel(new BorderLayout(5, 0));
this.add(topPanel, BorderLayout.NORTH);
setupTopPanel(topPanel);
JPanel centerPanel = new JPanel(new BorderLayout());
this.add(centerPanel, BorderLayout.CENTER);
setupCenterPanel(centerPanel);
}
// 给窗体面板加上边框
private void setupBorder() {
JPanel panel = new JPanel(new BorderLayout(5, 5));
panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
this.setContentPane(panel);
}
// 文本域面板
private void setupCenterPanel(JPanel panel) {
textarea.setFont(new Font(Font.DIALOG_INPUT, 0, 12));
panel.add(new JScrollPane(textarea));
}
// 上方面板
private void setupTopPanel(JPanel panel) {
textbox.setFont(new Font(Font.DIALOG_INPUT, 0, 12));
panel.add(textbox, BorderLayout.CENTER);
JButton button = new JButton("测试");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
checkRegularExpression();
}
});
panel.add(button, BorderLayout.EAST);
panel.add(new JLabel("正则表达式:"), BorderLayout.WEST);
}
// 检查正则表达式
private void checkRegularExpression() {
textarea.getHighlighter().removeAllHighlights();
String reg = textbox.getText();
String text = textarea.getText();
Pattern p = Pattern.compile(reg);
Matcher m = p.matcher(text);
if (m.find()) {
thisFrame.setTitle("文本符合表达式。");
highlightMatches(m);
} else {
thisFrame.setTitle("文本不符合表达式。");
}
}
// 将符合正则表达式的部分高亮显示
private void highlightMatches(Matcher m) {
highlight(m);
int start = m.end();
while (m.find(start)) {
highlight(m);
start = m.end();
}
}
private void highlight(Matcher m) {
try {
textarea.getHighlighter().addHighlight(m.start(), m.end(), highlightPainter);
} catch (BadLocationException e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
测试正则表达式软件,里面可以进行测试你的正则表达式是否正确,是一个很小的软件。
Java版的正则表达式测试工具,首先要按照JRE软件才能运行(压缩包中自带JRE软件)。 运行方式,命令行:java -jar QRe_V0.2.jar
一个java测试正则表达式的程序工具,在此分享给大家。
这个版本只有11K,前一个版本加入了junit测试包导致文件达250k.此版本去掉了测试包,使程序更小巧。
用来学习正则表达式的小工具(JAVA版的) 可以及时的测试自己写的正则表达式 Welcome to id0096.cn
用纯java swing编写的java正则表达式学习测试工具,不需要安装什么工具就可直接运行,并附带源代码
正则表达式工具 ruiyuan_zhengze 是一款用来编写和测试正则表达式的工具软件。 本软件通过可视化的界面,可以协助你快速、正确地写出复杂的正则表达式。
java代码-在线 java正则表达式测试工具,java正则测试,在线java正则匹配
用swing开发的正则表达式测试工具 - java 源代码 其中包括了简单swing开发方法、反斜线转译字符串处理、正则匹配的简单使用方法
一个java正规表达式工具类 关键字: 一个java正规表达式工具类 猛然想起两年写了一个java的正规表达式的java工具类,分享一下,有用到的欢迎下载使用。 如果你有常用的定义好的,且测试通过的正规表达式,欢迎跟贴...
* @Description: 正则表达式工具 * @author zhanghongbin mypczhanghongbin@gmail.com * @date 2014-11-9 下午6:35:37 * @Copyright: 2014 zhanghongbin. All rights reserved. * @version V1.0 */ package ...
正则表达式测试工具 正则表达式测试工具 - 测试 PHP JAVA
检查正则表达式的小工具,没有其它作用,只是测试
快速匹配需要的正则,方便实用,和大家一起分享一下
近期项目中正则表达式使用相当频繁,无论是web,还是java项目进行正则表达式调试都比较麻烦,上网搜了一下,又没有找到好用的工具,只有自已做一个测试用的页面来进行调试,现在供享出来,希望有人可以得到方便。
正则表达式测试工具,适用于好几种语言,比如.net,java,perl,ruby等
JGsoft RegexBuddy 是一款正则表达式工具。它是你使用正则表达式时的最好的助手。容易创建完全符合你的要求的正则表达式。清除地理解其他人写的复杂的正则表达式。通过示例字符串和文件,快速测试任意正则表达式,...