linux C正则表达式

【C语言+正则表达式】Linux平台下如何使用C语言处理正则表达式? 如题,这是最近要分享的主题,先占个坑。。。未完待续。。。 阅读详情

在网上找到的一个程序

[c]

#include <stdio.h>

#include <sys/types.h>

#include <regex.h>

 

/* 取子串的函数 */

static char* substr(const char*str,unsigned start, unsigned end)

{

      unsigned n = end - start;

      static char stbuf[256];

      strncpy(stbuf, str + start, n);

      stbuf[n] = 0;

      return stbuf;

}

/* 主程序 */

int main(int argc, char** argv)

{

      char * pattern;

      int x, z, lno = 0, cflags = 0;

      char ebuf[128], lbuf[256];

      regex_t reg;

      regmatch_t pm[10];

      const size_t nmatch = 10;

/* 编译正则表达式*/

      pattern = argv[1]; //获取正则表达式

      z = regcomp(&reg, pattern, cflags); //如果编译成功返回0,其它返回说明有错误产生

      if (z != 0)

      {

             regerror(z, &reg, ebuf, sizeof(ebuf));

             fprintf(stderr, "%s: pattern '%s' /n",ebuf, pattern);

             return 1;

      }

/* 逐行处理输入的数据 */

      while(fgets(lbuf, sizeof(lbuf), stdin))

      {

            ++lno;

//取得读取字符串的长度,并判断字符串结尾字符是否为回车符'/n'。如果是,将结尾字符改为0

            if ((z = strlen(lbuf)) > 0 && lbuf[z-1]== '/n')

                  lbuf[z - 1] = 0;

/* 对每一行应用正则表达式进行匹配 */

           z = regexec(&reg, lbuf, nmatch, pm, 0);

           if (z == REG_NOMATCH) continue;

           else if (z != 0)

           {

                  regerror(z, &reg, ebuf, sizeof(ebuf));

                  fprintf(stderr, "%s: regcom('%s')/n",ebuf, lbuf);

                  return 2;

           }

/* 输出处理结果 */

          for (x = 0; x < nmatch && pm[x].rm_so != -1; ++ x)

          {

//                 if (!x) printf("%04d: %s/n", lno, lbuf);

                 printf(" $%d='%s'/n", x, substr(lbuf,pm[x].rm_so,pm[x].rm_eo));

          }

      }

/* 释放正则表达式 */

     regfree(&reg);

     return 0;

}

[/c]

但是我发现有些正则表达式式却不能很好匹配

例如 文件a中

aadsdfs

asdfasz

adf中adfas

中国adfasd

lskdfo中国

如果用“[a-y]*"就不能匹配“中国adfasd"

 

还在研究中

南邮 2024 软件安全 实验四 自动脱壳+手动脱壳 这次这个实验很简单,就是一个简单的脱壳,然后进行爆破就行了,解法非常的多这里不多讲,会简单讲一下特殊情况这个点开是这样子:然后放进peid里面查看,我这个是原版的PEid,所以显示出来是这样:会显示nothing found,但其实如果你使用吾爱破解的魔改过的peid,它就会显示具体的壳名:然后你点击右下角的那个箭头,里面会有很多的插件用来自动脱壳:你也可以使用这个通用脱壳器,但是脱壳后的程序无法运行,这个放到后面讲。 阅读详情

相关推荐

【Python】SimpleITK使用笔记

1. 概念 1.1 nii格式 1.2 SimpleITK 1.3 SimpleITK 图像 2. 基本操作 2.1 常见属性 2.1 读取和保存图像 2.2 SimpleITK图像数据和Numpy矩阵数据之间的转换

See_Star的博客 7899

Linux C 正则表达式运用(regex.h)

一个段程序用到了中的正则表达式来识别字符串,写个小博客给自己记录一下。 也是查过才发现原来C语言也可以直接使用库函数来进行字符串匹配,当然由于不是标准的C语言库函数,所以只在linux系统中有,Windows的用户可能就得另想办法了。 中有四个函数,分别是: int regcomp(regex_t *preg, const char *pattern, int cflags); int

乐享极客 6560

PnP 单目相机位姿估计(二):solvePnP利用二维码求解相机世界坐标

前言 原理简介 输入参数准备 1 objectPoints特征点世界坐标 2 imagePoints特征点在摄像头下的像素点坐标 3cameraMatrixdistCoeffs内参矩阵和畸变矩阵 相机世界坐标的求解 1求世界坐标中的点在相机坐标系下的坐标 2求相机在世界坐标中的坐标 3效果求解相机在世界坐标系下的坐标点 4求解代码1.前言  很多时候,当我们利用单目相机获取图像时,往往只能获取图像中

cocoaqin的博客 5万+

linux 正则提取文本,正则表达式 – Powershell:从字符串中提取文本

以下正则表达式在括号之间提取任何内容:PS> $prog = [regex]::match($s,'\(([^\)]+)\)').Groups[1].ValuePS> $progSUB RAD MSD 50R IIIExlanation (created with RegexBuddy)Match the character '(' literally «\(»Match the re...

weixin_30443729的博客 742

从图像处理到AI:手把手教你用Halcon DL Tool完成第一个缺陷检测项目

本文详细介绍了如何使用Halcon深度学习工具(DL Tool)完成金属表面缺陷检测项目。从环境准备、数据采集标注到模型训练与部署,手把手指导工程师快速构建AI质检系统,显著提升工业缺陷检测效率。特别针对金属反光等难点问题提供实用解决方案。

weixin_42531886的博客 290

Quartus Prime器件库安装实战:从版本选择到权限避坑指南

本文详细介绍了Quartus Prime器件库的安装全流程,从版本选择、精准下载到权限设置和安装验证。重点解析了版本匹配的黄金法则、管理员权限的必要性以及安装路径的最佳实践,帮助用户避开常见陷阱,确保器件库安装一次成功。

weixin_33713707的博客 515

linux C regex正则表达式函数库

C中的正则表达式如何实现呢,以regex系列函数来简要说明: 标准的linux c与c++不支持正则表达式; 以POSIX函数库中的Regex系列函数来说明在Linux c下如何使用正则表达式: 1、编译正则表达式: Regcomp函数,生成regex_t数据结构; int Regcomp(regex_t *preg,...

weixin_34318326的博客 485

BVH2SMPL 实战笔记

BVH2SMPL 实战笔记

jacke121的专栏 843

Linux C regex的使用及性能测试

regex的测试代码和性能测试

JunJie的个人博客 610

NL2SQL进阶系列(3):Data-Copilot、Chat2DB、Vanna Text2SQL优化框架开源应用实践详解[Text2SQL]

NL2SQL进阶系列(3):Data-Copilot、Chat2DB、Vanna Text2SQL优化框架开源应用实践详解[Text2SQL]

丨汀、的博客 5421

YOLO26魔改神技:YOLO26引入SimAM(无参注意力):不增加网络参数的3D能量函数提点黑科技

文章摘要 2026年YOLO26模型发布引发边缘计算革命,但特定场景精度不足问题催生注意力机制改进需求。本文聚焦无参数注意力机制SimAM,基于神经科学理论通过3D能量函数直接计算神经元权重,实现零参数量提升模型性能。文章深度解析YOLO26四大创新架构,对比SimAM与传统注意力机制差异,并探讨其在YOLO26中的集成方案。研究显示,SimAM在不增加模型体积前提下显著提升mAP指标,特别适合边缘端部署。全文涵盖架构设计、代码实现、竞品对比、部署方案等维度,为轻量化视觉模型优化提供系统解决方案。

ZDQ58818的博客 274

linux C中使用正则表达式

linux C中使用正则表达式   对应的头文件是 #include <regex.h> 编译正则表达式 regcomp() 函数原型: int regcomp(regex_t *preg, const char *regex, int cflags); regex_t 是一个结构体数据类型,用来存放编译后的正则表达式,其结构为 struct re_pattern_buffe...

liaoyaonline的博客 761

Virtual Hard Disk version 2 (VHDX) 文件格式详解

VHDX 镜像格式详解 0. References windows github 1. Overview Microsoft 虚拟化产品中常用的映像格式是虚拟硬盘版本 2 (VHDX) 映像格式。该规范基于可用文档,并通过分析测试数据进行了增强。 VHDX 镜像格式种类 固定硬盘镜像 动态硬盘镜像 差异硬盘镜像 VHDX 镜像文件由以下元素构成: file (type) identifier 2x image headers 2x region tables log or metadata journ

圣三一 2697

Linux C语言 46-正则表达式

本节关键字:Linux、C语言、正则表达式 相关C库函数:

Tianwx的博客 2542

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

linux c正则表达式

在很多人看来,正则表达式看上去古怪且复杂,因此往往不想去触及或使用。如果我们抛开这种“畏难”心理,在经过循序渐进地学习之后,就会发现这些复杂的表达式其实写起来还是相当简单的。一旦它被你所“驯服”,就可利用正则表达式把原需数小时辛苦且易错的文本处理工作压缩在几分钟(甚至几秒钟)内完成。 正则表达式定义 正则表达式(regular expression)是Linux系统中一种非常重要的字符串搜

jyj0710的专栏 600

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Linux下C语言正则表达式

https://www.cnblogs.com/stlong/p/6289107.html

FY_2018的博客 268

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Linux下C正则表达式使用方法

本文以项目实例说明一下posix C正则表达式的使用方法。 项目中有一个网络管理模块,需要访问到Linux系统中可用的网卡,经过在网上搜罗,找到一种获取网络配置信息的方式,即调用getifaddrs();在返回的结果中进行遍历和解析,找到所有以eth开头的行,然后提取出对应的网卡名称。因为网卡名称一般是eth后跟一个整数,为简单而准确的提取出网卡名称,使用正则表达式进行匹配之行之有效的解决之道。

u010492096的专栏 1806

在linux C中使用正则表达式pcre

原 在linux C中使用正则表达式pcre ...

jackjack博客 365

c语言正则表达式替换,Linux C 支持正则表达式的字符串替换函数...

[root@localhost src]# cat a.c/*** Linux C 支持正则表达式的字符串替换函数** Author: cnscn@163.com* Homepage: www.cnscn.org 欢迎您到cns家园来,有好吃的招待哟* Date: 2007-03-08 17:41**/#include #include #include #include #include ...

weixin_31858171的博客 459

linux c 语言 正则表达式

文章定位:初学者写坑 关于正则表达式的基础,请参考 http://rubular.com/  关于函数解释,请参考 http://man7.org/linux/man-pages/man3/regex.3.html 自己写了段小代码,从URL中提取处主机域名和剩余部分。 #include #include #include #include int main(int argc, ch

donggua_fu的博客 1073

linux C语言处理正则表达式

Linux下C语言处理正则表达式——regex.h 具体函数介绍 编译正则表达式函数 int regcomp(regex_t *preg, const char *regex, int cflags); 其中preg用于保存编译后的正则表达式,regex是我们写的正则表达式。cflags标志位后面再说。 先说说regex_t结构体: 对于这个结构体而言,我们只要记住,它是...

weixin_30295091的博客 265

Linux c 使用正则表达式

在用正则表达式进行电话号码和邮箱的格式验证的时候,发现wa

pty_2007的专栏 986

linux c中libxml2 正则表达式 语法注意

      偶然的机会让我满足了linux c 中使用正则表达式的一个机会。程序设计的目的是生成一个so文件,能够对拔入的号码进行正则匹配,允许以133、153、189开头的号码进入呼叫队列。程序调用的是libxml2的库函数,相信用过的人不会陌生。程序大概是如下:int  matchTel(char* str_reg,char* str_tel){    regex_t preg;  

琥珀的专栏 941

linux c 正则表达式

标准的C和C+ + 都不支持正则表达式,但有一些函数库可以辅助C/ C+ + 程序员完成这一功能,其中最著名的当数Philip Hazel的Perl- Compatible Regular Expression库,许多Linux发行版本都带有这个函数库。编译正则表达式为了提高效率,在将一个字符串与正则表达式进行比较之前,首先要用regcomp( ) 函数对它进行编译,将其转化为regex_

岁月有痕 698

linux c语言正则表达式,linux C正则表达式

1.程序源码#include #include #include #include /*取子串的函数*/static char *substr(const char *str, unsigned int start, unsigned int end){static char stbuf[256];unsigned int n = end - start;memcpy(stbuf, str+sta...

weixin_32141253的博客 237

linux C 正则表达式 blog.chinaunix.net/uid-20729605-id-1884365.html

linux C 正则表达式 2010-07-21 10:25:57 分类: LINUX 最近有这么个需求,c搞搞正则,毕竟Regular Expression so强大^_^ 标准的C和C++都不支持正则表达式,但有一些函数库可以辅助C/C++程序员完成这一功能,其中最著名的当数Philip Hazel的Perl-Compatible Regular Expression库,

诺尔曼 1017
上一篇: SQLite与C结合
下一篇: linux C正则表达式——POSIX正则测试
DreamFlyingFish
博客等级 码龄20年 7粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值