【字符串解析】IP地址字段解析提取函数接口

news2024/10/6 4:14:10

  在嵌入式业务逻辑中,我们有时需要从配置文件、串口或者服务端接收的消息数据中进行字符串解析,来提取需要的目标字符串字段。通常我们会调用字符串处理相关的函数,例如strstr,strchr,sscanf等,再结合指针偏移来提取目标字段。实现这种方式的前提是,我们需要提前知道字符串固定的格式内容,如果待解析的字符串内容或者格式偏差的情况,那么我们编写好的字符串解析处理程序就不太适用了。以下是一个通用的对于从字符串中解析IP地址的函数接口,只要字符串中有完整的IP地址字段就会被提取出来。以供参考。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <regex.h>

#define OUT
#define IN

char extract_IPInfo(IN char *str, OUT char *ip)
{
    regex_t regex;
    regmatch_t pmatch[1];
    const char *pattern = "([0-9]{1,3}\\.){3}[0-9]{1,3}";
    int ret;

    // Compile the regular expression
    ret = regcomp(&regex, pattern, REG_EXTENDED);
    if (ret) {
        fprintf(stderr, "Could not compile regex\n");
        return 0;
    }

    // Execute the regular expression
    const char *p = str;
    while (regexec(&regex, p, 1, pmatch, 0) == 0) {
        // Extract the matched IP address
        int start = pmatch[0].rm_so;
        int end = pmatch[0].rm_eo;
        strncpy(ip, p + start, end - start);
        ip[end - start] = '\0';

        // Print the matched IP address
        printf("Found IP: %s\n", ip);

        // Move the pointer forward
        p += end;
    }

    // Free compiled regular expression
    regfree(&regex);
    return 1;
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1834605.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【验证码识别】Yolov8实战某验3空间推理点选验证码,目标检测,语义分割,颜色分类。

【验证码识别】Yolov8实战某验3空间推理点选验证码&#xff0c;目标检测&#xff0c;语义分割&#xff0c;颜色分类。 文章目录 【验证码识别】Yolov8实战某验3空间推理点选验证码&#xff0c;目标检测&#xff0c;语义分割&#xff0c;颜色分类。声明1.空间推理验证码&#xf…

C# OpenCvSharp 车牌颜色识别

C# OpenCvSharp 车牌颜色识别 目录 效果 项目 代码 下载 效果 项目 代码 using OpenCvSharp; using System; using System.Diagnostics; using System.Drawing; using System.Windows.Forms; namespace OpenCvSharp_Demo { public partial class Form1 : Form { …

采购芯片时细心,再细心!

检查原理图&#xff0c;采购时候的细心对照所费的时远远少于焊完找BUG的时间&#xff01;&#xff01;&#xff01; 购买芯片的时候不光看芯片名称&#xff0c;封装&#xff0c;丝印也要看&#xff0c;如果不一样必须对照两者的引脚图仔细观察是否一样&#xff01;&#xff01…

扭蛋机小程序:深度探索虚拟寻宝之旅的乐趣

引言 扭蛋机小程序&#xff0c;这个融合了传统与创新的虚拟寻宝乐园&#xff0c;已经吸引了无数玩家的目光。在这个充满惊喜和挑战的虚拟世界里&#xff0c;每一个扭蛋都可能蕴藏着无尽的宝藏。本文将带您深入探索扭蛋机小程序的魅力所在&#xff0c;体验一场别开生面的虚拟寻…

上位机图像处理和嵌入式模块部署(h750 mcu vs f407)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 在目前工业控制上面&#xff0c;f103和f407是用的最多的两种stm32 mcu。前者频率低一点&#xff0c;功能少一点&#xff0c;一般用在低端的嵌入式设…

【数据结构与算法】运算受限的线性表(栈,队列)重要知识点详解

栈和队列是什么样的线性表? 栈&#xff08;Stack&#xff09;和队列&#xff08;Queue&#xff09;都是运算受限的线性表。 栈&#xff1a;栈是一种特殊的线性表&#xff0c;只允许在一端&#xff08;通常称为“顶端”&#xff09;进行插入和删除操作。栈遵循后进先出&#x…

CENTOS7.9下服务器双网卡bond模式6配置示例

​1.bond口的特点 bond口通过将多个网口进行聚合&#xff0c;多个网口聚合后一方面实现了大带宽传输&#xff0c;另外多网口聚合后也同时具有冗余特性&#xff0c;当其中一个网口down掉后&#xff0c;其他网口会继续转发流量&#xff0c;不会导致流量中断。 2.使用条件 当环境…

参数搜索流形学习

目录 一、网格搜索1、介绍2、代码示例 二、HalvingGridSearch1、介绍2、代码示例 三、随机搜索1、介绍2、代码示例 三、贝叶斯搜索1、介绍2、代码示例 四、参数搜索总结五、流形学习1、LLE1、介绍2、官方代码示例 2、t-SNE1、介绍2、官方代码示例 一、网格搜索 1、介绍 网格搜…

安卓手机最近删除照片如何找回?这些技巧来帮你!

我们时常会在手机上拍摄大量照片&#xff0c;记录下生活中的每一个瞬间。然而&#xff0c;由于存储空间不足、设备更新等原因&#xff0c;我们可能会不小心删除一些照片。最近删除照片如何找回&#xff1f;通过本文的介绍&#xff0c;您将了解到如何轻松找回最近删除的照片&…

2025计算机毕业设计选题题目推荐-毕设题目汇总大全

选题在于精&#xff0c;以下是推荐的容易答辩的选题&#xff1a; SpringBoot Vue选题: 基于SpringBoot Vue家政服务系统 基于SpringBoot Vue非物质文化遗产数字化传承 基于SpringBoot Vue兽医站管理系统 基于SpringBoot Vue毕业设计选题管理系统 基于SpringBoot Vue灾害应急救援…

群辉USB Copy套件的使用

目录 一、套件安装 二、插入USB设备 三、使用 四、故障排除 有了群辉NAS后,很多U盘、移动硬盘的数据需要备份到NAS中,这时就可以考虑使用USB Copy这个套件了。 USB Copy 乃是群晖上可用于和外接存储设备进行文件复制的一个工具,我常常借助它把外置存储设备的文件拷贝至…

程序猿大战Python——文件操作、异常、模块——异常介绍

什么是异常 目标&#xff1a;了解什么是异常&#xff1f; 异常指的是Python程序发生的不正常事件。 有时候&#xff0c;异常可称为错误。 当检测到一个错误时&#xff0c;Python解释器就无法继续执行&#xff0c;反而出现了一些错误的提示&#xff0c;这就是异常&#xff0c;…

stable diffusion-v2.1-pytorch以文生图推理模型

Stable Diffusion Version 2 论文 DENOISING DIFFUSION IMPLICIT MODELS https://arxiv.org/pdf/2010.02502 模型结构 通过串联或更通用的交叉注意机制来调节LDM 算法原理 通过将图像形成过程分解为去噪自动编码器的顺序应用&#xff0c;扩散模型&#xff08;DM&#xff…

Thermo Fisher赛默飞TSQ单杆电源维修1R120380-0001

美国热电质朴分析仪电路板维修&#xff0c;液相色谱质谱联用仪维修&#xff0c;Thermo Fisher赛默飞世尔光谱仪IS10 IS5赛默飞主板维修。 公司仪器维修设备备有三相交流电源,变频电源&#xff0c;无油空压气源&#xff0c;标准化的维修平台、电子负载&#xff0c;耐压测试仪、老…

【YOLOv8改进[注意力]】使用MLCA混合局部通道注意力改进c2f + 含全部代码和详细修改方式 + 手撕结构图

本文将进行在YOLOv8中使用MLCA混合局部通道注意力改进c2f 的实践,助力YOLOv8目标检测效果的实践,文中含全部代码、详细修改方式以及手撕结构图。助您轻松理解改进的方法。 改进前和改进后的参数对比: 目录 一 MLCA 二 使用MLCA混合局部通道注意力改进c2f 1 整体修改

群辉NAS映射为本地盘符

目录 一、本地通过网上邻居 二、远程使用WebDAV套件 1、NAS安装套件 2、使用ZeroTier (1)NAS上安装ZeroTier (2)PC上安装ZeroTier (3)PC上安装RaiDrive并设置 3、使用cpolar (1)NAS安装cpolar (2)配置WebDAV (3)配置cpolar (4)PC上安装并配置RaiDrive…

【机器学习】机器学习重要分支——集成学习:理论、算法与实践

文章目录 引言第一章 集成学习的基本概念1.1 什么是集成学习1.2 集成学习的类型1.3 集成学习的优势 第二章 集成学习的核心算法2.1 Bagging方法2.2 Boosting方法2.3 Stacking方法 第三章 集成学习的应用实例3.1 图像分类3.2 文本分类 第四章 集成学习的未来发展与挑战4.1 模型多…

浪潮5720M6安装Windows2012 R2纪实

浪潮5720M6服务器官网适配的Windows2019系统&#xff0c;本次安装的是windows 2012 R2。整个过程大概是制作系统盘、服务器RAID配置&#xff0c;BMC配置&#xff0c;掉电自动恢复设置、阵列卡驱动下载、安装系统、开启远程服务、安装net3.5。 1.1、制作系统盘&#xff0c;本次…

希尔排序-C语言版本

前言 从希尔开始&#xff0c;排序的速度就开始上升了&#xff0c;这里的排序开始上一个难度了&#xff0c;当然难一点的排序其实也不是很难&#xff0c;当你对于插入排序了解的足够深入的时候&#xff0c;你会发现其实希尔就是插入的异形&#xff0c;但是本质上还是一样的 希尔…

Android可穿戴设备世界之旅

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 介绍 Android通过在电视、穿戴和汽车等各种电子模块中扩展下一代应用开发概念&#xff0c;扩展了其整个范围和可…