在好例子网,分享、交流、成长!
您当前所在位置:首页 → Python 开发实例 → 常用Python方法 → 正则表达式可视化调试工具:实时匹配高亮、语法树解析、常用模板库、一键导出匹配结果

正则表达式可视化调试工具:实时匹配高亮、语法树解析、常用模板库、一键导出匹配结果

常用Python方法

下载此实例

实例介绍

🖥️ 运行效果

🚀 实例简介

一款面向开发者的正则表达式可视化调试桌面工具,支持实时匹配高亮显示、分组捕获结果展示、内置常用正则模板(手机号/邮箱/身份证/IP地址等)、匹配结果一键导出TXT/CSV。告别正则调试痛苦,所见即所得!

💻 核心代码


#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
正则表达式可视化调试工具
功能:实时匹配高亮、分组捕获、常用模板、一键导出
作者:51python.com
"""

import tkinter as tk
from tkinter import ttk, filedialog, messagebox
import re
import platform
import csv

# 中文字体配置
CHINESE_FONT = "WenQuanYi Zen Hei" if platform.system() == "Linux" else "Microsoft YaHei"

# 常用正则模板
TEMPLATES = {
    "手机号": r"1[3-9]\d{9}",
    "邮箱": r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}",
    "身份证号": r"[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]",
    "IPv4地址": r"(?:(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d)",
    "URL链接": r"https?://[^\s<>\"']+|www\.[^\s<>\"']+",
    "中文汉字": r"[\u4e00-\u9fff]+",
    "日期(YYYY-MM-DD)": r"\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])",
    "金额(数字)": r"¥?\d+(?:\.\d{1,2})?",
}

class RegexTool:
    """正则表达式可视化调试工具"""
    
    def __init__(self, root):
        self.root = root
        self.root.title("正则表达式可视化调试工具")
        self.root.geometry("950x700")
        self.matches = []  # 存储匹配结果
        self.setup_ui()
        
    def setup_ui(self):
        """构建界面"""
        # 顶部标题
        title_frame = tk.Frame(self.root, bg="#1976D2", height=40)
        title_frame.pack(fill=tk.X)
        title_frame.pack_propagate(False)
        tk.Label(title_frame, text="🔍 正则表达式可视化调试工具",
                 font=(CHINESE_FONT, 14, "bold"), bg="#1976D2", fg="white").pack(pady=8)
        
        # 正则输入区
        input_frame = tk.LabelFrame(self.root, text="正则表达式", font=(CHINESE_FONT, 10, "bold"))
        input_frame.pack(fill=tk.X, padx=10, pady=5)
        
        regex_row = tk.Frame(input_frame)
        regex_row.pack(fill=tk.X, padx=5, pady=5)
        
        tk.Label(regex_row, text="模式:", font=(CHINESE_FONT, 10)).pack(side=tk.LEFT)
        self.regex_entry = tk.Entry(regex_row, font=("Consolas", 12), width=50)
        self.regex_entry.pack(side=tk.LEFT, padx=5, fill=tk.X, expand=True)
        self.regex_entry.bind("", lambda e: self.do_match())
        
        # 选项行
        opt_row = tk.Frame(input_frame)
        opt_row.pack(fill=tk.X, padx=5, pady=3)
        
        self.ignorecase_var = tk.BooleanVar()
        tk.Checkbutton(opt_row, text="忽略大小写", variable=self.ignorecase_var,
                       font=(CHINESE_FONT, 9), command=self.do_match).pack(side=tk.LEFT, padx=5)
        self.multiline_var = tk.BooleanVar()
        tk.Checkbutton(opt_row, text="多行模式", variable=self.multiline_var,
                       font=(CHINESE_FONT, 9), command=self.do_match).pack(side=tk.LEFT, padx=5)
        
        # 模板选择
        tpl_row = tk.Frame(input_frame)
        tpl_row.pack(fill=tk.X, padx=5, pady=3)
        tk.Label(tpl_row, text="常用模板:", font=(CHINESE_FONT, 9)).pack(side=tk.LEFT)
        
        self.template_combo = ttk.Combobox(tpl_row, values=list(TEMPLATES.keys()),
                                           state="readonly", width=18)
        self.template_combo.pack(side=tk.LEFT, padx=5)
        self.template_combo.bind("<>", self.on_template_select)

💡 适用场景

办公自动化、数据分析、快速原型开发

标签:

实例下载地址

正则表达式可视化调试工具:实时匹配高亮、语法树解析、常用模板库、一键导出匹配结果

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享!

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警