正则表达式匹配分析工具 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
正则表达式匹配分析工具 C#编写相关推荐
- python编辑距离正则匹配_(C/C++学习)33.编辑距离和正则表达式匹配分析
说明:本文主要分析关于力扣 10 题(正则表达式匹配) 和 力扣 72 题(编辑距离) 的状态方程问题(主要便于自己理解) 1.关于编辑距离的状态方程: a. 首先 DP[i][j] 为字符串 1 的 ...
- 编辑的福音——一款用python编写的文字素材采集分析工具
笔者渔鱼之前做文字编辑,写稿时总感觉文字素材的收集整理会占用大量时间.往往确定一个主题后,先后会在百度.各种门户甚至app内容平台去找相关材料.找不到很多又很疲劳,就想如果能有个工具,在网上各个地方快 ...
- golang 编写的在线redis 内存分析工具 rma4go
redis 内存分析工具 rma4go redis是一个很有名的内存型数据库,这里不做详细介绍.而rma4go (redis memory analyzer for golang) 是一个redis的 ...
- 一个golang编写的redis内存分析工具rma4go
redis 内存分析工具 rma4go 简介 redis是一个很有名的内存型数据库,这里不做详细介绍.而rma4go (redis memory analyzer for golang) 是一个red ...
- 最好用的日志分析工具ELK
一.ELK介绍 1.1 elasticsearch 1.1.1 elasticsearch介绍 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎 ...
- Redis内存分析工具之redis-rdb-tools的安装与使用
操作系统:Centos7 1.redis-rdb-tools工具是用python语言编写的,所以首先需要安装python: 安装: (1)安装libffi-devel: yum -y insta ...
- tcpdump 网络数据包分析工具
简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的 ...
- 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 ...
- # pgBadger日常用法(pg日志分析工具)
pgBadger日常用法(pg日志分析工具) 文章目录 pgBadger日常用法(pg日志分析工具) 1 安装 2 参数说明 3 官方用法示例 4 一般用法 5 这么用吧 6 用不上的参数 7 最后 ...
- 系统级性能分析工具perf的介绍与使用
测试环境:Ubuntu16.04 + Kernel:4.4.0-31 apt-get install linux-source cd /usr/src/tools/perf make &&am ...
最新文章
- 荣耀30pro系统_荣耀30 pro:正式再见!
- [WWDC] What's New in Swift 4 ?
- Vue.js 状态管理
- 4 VMware安装
- android 生成推广图片保存_flutter 如何生成图片并保存到手机相册?
- 大一的一些心得与近况
- MYSQL5.7离线安装报libnuma.so.1()(64bit) is needed by mysql-community-server-5.7.29-1.el7.x86_64
- active set method(激活集方法)
- vs2008打开aspx文件时设计界面死机情况的解决
- DSP28335定时器
- Mac上通过docker配置PHP开发环境
- php最小二乘法,Python中实现最小二乘法思路及实现代码
- java-sec-code学习之path_traversal
- 如何防止单元格在Google表格中进行编辑
- xp计算机限制打开u盘,winxp电脑提示U盘拒绝访问怎么修复
- [算法]声音数据处理
- Invalid Login Credentials
- EXCEL两个表如何通过关联合并
- getElementsByClassName用法
- GameNFT深度分析, 打造属于头号玩家的开放世界!
热门文章
- 教你识别120多个车牌
- 小米机顶盒安装第三方软件流程
- HTML5制作斑马线表格,HTML_CSS,JavaScript和MooTools制作斑马纹表格,简单的斑马纹表格,如果页面 - phpStudy...
- 850pro测试软件,三星850Pro ssd可靠性测试 6000次P/E
- 凑微分公式_高等数学–求积分的一些方法(IV 凑微分法)
- vb局域网连接mysql_VB 用代码进行局域网内数据库的连接
- Android:根据阳历日期获取农历日期
- Qt那些事儿-Qt基础教程
- 树莓派上3g模块的使用
- 移动视频直播点播方案