正则表达式匹配分析工具 C#编写

引言

嵌入式协同开发时经常会用到静态链接库文件(拓展名为.a),即.c文件编译的库。有时我们需要知道某个库打包了哪些c文件,通常可以用文本编辑器打开并查找,但是对于较复杂的库这样查找会非常麻烦,利用正则表达式则可以轻松解决。本文正是介绍一个使用C#开发的正则表达式匹配工具,该工具可从文本文件中一键提取出所有匹配项。

使用介绍

使用本工具需要熟悉正则表达式,可参考正则表达式教程 https://www.runoob.com/regexp/regexp-tutorial.html 。

本工具界面如下:

首先点击“打开”按钮,打开需要分析的文本文件。测试用“.a” 文本内容局部如下图,我们需要在其中找出需要的信息。

输入正则表达式

[a-zA-Z][a-zA-Z0-9_]*[\.][o]

以查找类似“xx.o”的字符串,点击“分析”按钮,即可查找并列出所有匹配项。

 

源码解析

1.正则表达式分析类

新建一个类用于正则表达式分析及存储结果。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

namespace RegExpAnalyst
{
    class RegExpAnalysis
    {
        public List<string> matches = new List<string>();
        public string errorCode;

        /// <summary>
        /// 正则表达式分析
        /// </summary>
        /// <param name="input">要分析的字符串内容</param>
        /// <param name="pattern">正则表达式</param>
        /// <returns></returns>
        public bool Analysis(string input, string pattern)
        {
            try
            {
                foreach (Match item in Regex.Matches(input, pattern))
                {
                    matches.Add(item.Value);
                }
            }
            catch (Exception e)
            {
                errorCode = e.Message;
                return false;
            }
            return true;
        }
    }
}

2.打开文件操作

这里仅记录文件路径。

private void Button_Open_Click(object sender, RoutedEventArgs e)
{
    OpenFileDialog ofd = new Microsoft.Win32.OpenFileDialog();
    ofd.Filter = "全部文件|*";

    if (ofd.ShowDialog() == true)
    {
        //此处做你想做的事 ...=ofd.FileName; 
        textBox_file.Text = ofd.FileName;
        filePath = ofd.FileName;

        TextBox_Msg.Text = "";
    }
}

3.分析按钮操作

这里首先打开文件并读取到文件内容存入content,然后实例化一个RegExpAnalysis对象,并调用分析函数。分析函数会查找匹配项并存入matches,最后我们将matches内容输出到TextBox即可,如果分析出错则显示错误信息。

private void Button_Show_Click(object sender, RoutedEventArgs e)
{
    String content;
    FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
    StreamReader sr = new StreamReader(fs);

    content = sr.ReadToEnd();
    fs.Close();
    sr.Close();
    //分析
    RegExpAnalysis regExp = new RegExpAnalysis();
    
    if (regExp.Analysis(content, textBox_Regexp.Text))
    {
        TextBox_Msg.Text = String.Format("匹配数量:{0}\n", regExp.matches.Count);
        foreach (var item in regExp.matches)
        {
            TextBox_Msg.Text += (item + "\n");
        }
    }
    else
    {
        TextBox_Msg.Text = regExp.errorCode + "\n";
    }
}

 

资源下载

工具下载:https://download.csdn.net/download/xiaoqvae/14021550

源码下载:https://download.csdn.net/download/xiaoqvae/14021585

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TalonShaw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值