引言

嵌入式协同开发时经常会用到静态链接库文件(拓展名为.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

正则表达式匹配分析工具 C#编写相关推荐

  1. python编辑距离正则匹配_(C/C++学习)33.编辑距离和正则表达式匹配分析

    说明:本文主要分析关于力扣 10 题(正则表达式匹配) 和 力扣 72 题(编辑距离) 的状态方程问题(主要便于自己理解) 1.关于编辑距离的状态方程: a. 首先 DP[i][j] 为字符串 1 的 ...

  2. 编辑的福音——一款用python编写的文字素材采集分析工具

    笔者渔鱼之前做文字编辑,写稿时总感觉文字素材的收集整理会占用大量时间.往往确定一个主题后,先后会在百度.各种门户甚至app内容平台去找相关材料.找不到很多又很疲劳,就想如果能有个工具,在网上各个地方快 ...

  3. golang 编写的在线redis 内存分析工具 rma4go

    redis 内存分析工具 rma4go redis是一个很有名的内存型数据库,这里不做详细介绍.而rma4go (redis memory analyzer for golang) 是一个redis的 ...

  4. 一个golang编写的redis内存分析工具rma4go

    redis 内存分析工具 rma4go 简介 redis是一个很有名的内存型数据库,这里不做详细介绍.而rma4go (redis memory analyzer for golang) 是一个red ...

  5. 最好用的日志分析工具ELK

    一.ELK介绍 1.1 elasticsearch 1.1.1 elasticsearch介绍 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎 ...

  6. Redis内存分析工具之redis-rdb-tools的安装与使用

    操作系统:Centos7    1.redis-rdb-tools工具是用python语言编写的,所以首先需要安装python: 安装: (1)安装libffi-devel: yum -y insta ...

  7. tcpdump 网络数据包分析工具

    简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的 ...

  8. 2019-8-20 [Linux] 6.Shell的基本操作 查看 改变 列出 阅读开头/结尾 循环查看 阅读工具less 查找文件内容 文本分析工具AWK 文本编辑工具SED文件find 帮助man

    文章目录 6.linuxShell的基本操作 6.1 查看目录和文件 6.1.1 显示当前目录:pwd 6.1.2 改变目录:cd 6.1.3 列出目录内容:ls 1) 查看列表信息 以及详细信息 2 ...

  9. # pgBadger日常用法(pg日志分析工具)

    pgBadger日常用法(pg日志分析工具) 文章目录 pgBadger日常用法(pg日志分析工具) 1 安装 2 参数说明 3 官方用法示例 4 一般用法 5 这么用吧 6 用不上的参数 7 最后 ...

  10. 系统级性能分析工具perf的介绍与使用

    测试环境:Ubuntu16.04 + Kernel:4.4.0-31 apt-get install linux-source cd /usr/src/tools/perf make &&am ...

最新文章

  1. 荣耀30pro系统_荣耀30 pro:正式再见!
  2. [WWDC] What's New in Swift 4 ?
  3. Vue.js 状态管理
  4. 4 VMware安装
  5. android 生成推广图片保存_flutter 如何生成图片并保存到手机相册?
  6. 大一的一些心得与近况
  7. MYSQL5.7离线安装报libnuma.so.1()(64bit) is needed by mysql-community-server-5.7.29-1.el7.x86_64
  8. active set method(激活集方法)
  9. vs2008打开aspx文件时设计界面死机情况的解决
  10. DSP28335定时器
  11. Mac上通过docker配置PHP开发环境
  12. php最小二乘法,Python中实现最小二乘法思路及实现代码
  13. java-sec-code学习之path_traversal
  14. 如何防止单元格在Google表格中进行编辑
  15. xp计算机限制打开u盘,winxp电脑提示U盘拒绝访问怎么修复
  16. [算法]声音数据处理
  17. Invalid Login Credentials
  18. EXCEL两个表如何通过关联合并
  19. getElementsByClassName用法
  20. GameNFT深度分析, 打造属于头号玩家的开放世界!

热门文章

  1. 教你识别120多个车牌
  2. 小米机顶盒安装第三方软件流程
  3. HTML5制作斑马线表格,HTML_CSS,JavaScript和MooTools制作斑马纹表格,简单的斑马纹表格,如果页面 - phpStudy...
  4. 850pro测试软件,三星850Pro ssd可靠性测试 6000次P/E
  5. 凑微分公式_高等数学–求积分的一些方法(IV 凑微分法)
  6. vb局域网连接mysql_VB 用代码进行局域网内数据库的连接
  7. Android:根据阳历日期获取农历日期
  8. Qt那些事儿-Qt基础教程
  9. 树莓派上3g模块的使用
  10. 移动视频直播点播方案