【fnmatch】文件名的正则匹配

fnmatch --- Unix 文件名模式匹配 此模块提供了Unix shell 风格的通配符,它们并不等同于正则表达式(关于后者的文档参见re 模块) 阅读详情

转自:https://blog.youkuaiyun.com/leeboy_wang/article/details/7974972

fnmatch:int fnmatch(const char *pattern, const char *string, int flags);

man中是这么写道:The  fnmatch()  function checks whether the string argument matches the pattern argument, which is a shell wildcard pattern. 就是判断字符串是不是符合pattern所指的结构。  
FNM_NOESCAPE
如果这个标志设置了,处理反斜杠为普通字符,而不是转义字符。
FNM_PATHNAME
如果这个标志设置了,string 里的斜杠只匹配 pattern 里的斜杠,它不能匹配星号(*)或问号(?)元字符,也不能匹配包含斜杠的中括号表达式([])。
FNM_PERIOD
如果这个标志设置了,string 里的起始点号必须匹配 pattern 里的点号。一个点号被认为是起始点号,如果它是string 第一个字符,或者如果同时设置了 FNM_PATHNAME,紧跟在斜杠后面的点号。
FNM_FILE_NAME
这是 FNM_PATHNAME 的 GNU 同义语。
FNM_LEADING_DIR
如果这个标志(GNU 扩展)设置了,模式必须匹配跟随在斜杠之后的 string 的初始片断。这个标志主要是给 glibc 内部使用并且只在一定条件下实现。
FNM_CASEFOLD
如果这个标志(GNU 扩展)设置了,模式匹配忽略大小写。

返回值:0,string 匹配 pattern;FNM_NOMATCH,没有匹配;或者其它非零值,如果出错。

(程序来自网络)

#include <fnmatch.h>
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
int main(int argc, char *argv[])
{
	char *pattern;
	DIR *dir;
 	struct dirent *entry;
	int ret;

	dir = opendir(argv[2]);	//打开指定路径

	pattern = argv[1];	
	
	//路径存在
	if(dir != NULL)
	{
		//逐个获取文件夹中文件
	    while( (entry = readdir(dir)) != NULL)
		{
	      ret = fnmatch(pattern, entry->d_name, FNM_PATHNAME|FNM_PERIOD);
	      if(ret == 0)			//符合pattern的结构
			{
	        printf("%s\n", entry->d_name);
	      }else if(ret == FNM_NOMATCH){
	        continue ;
	      }else
			{
	        printf("error file=%s\n", entry->d_name);
	    		}
	    	}

    	closedir(dir);
  	}
}


C/C++实现字符串模糊匹配 本文分别给大家介绍了2个C++在Linux平台和windows平台下实现字符串模糊匹配的方法,基本的核心思想都是一样的,均是使用fnmatch函数,有需要的小伙伴可以参考下。 立即下载

相关推荐

1.Fay-UE5数字人工程导入(UE数字人系统教程)

ue5数字人系列教程(含源文件工程)

1万+

fnmatch实例详解

fnmatch实例详解

u013525455的博客 1345

雷光联动自动化标校方法

动态标校需要利用动目标,在雷达和光电同时看到目标时记录光电的方位、俯仰,以及利用雷达给的目标信息计算的方位俯仰,手动记录两者的数值,多方位,多距离段记录,费时费力,且人工记录数据不全,计算容易出差错,耗费成本和精力太大。目标相距设备的水平距离 = acos(cos(设备纬度弧度值) * cos(目标纬度弧度值) * cos(设备经度弧度值 – 目标经度弧度值) + sin(设备纬度弧度值) * sin(目标纬度弧度值)) * 6378137;本发明涉及光电技术领域,安防领域,尤其涉及雷达光电动态标校等。

u013358093的博客 1580

fnmatch实例详解(与readdir、opendir实现模糊查询)

fnmatch:int fnmatch(const char *pattern, const char *string, int flags); man中是这么写道:The  fnmatch()  function checks whether the string argument matches the pattern argument, which is a shell wildcard

Leeboy_Wang的专栏 1万+

ORB-SLAM3复现的详细过程——配置安装及ROS和脚本运行---Ubuntu20.04

所提供的图像具有高动态范围,事先进行了光度标定,用20Hz的帧率采集,分辨率为1024像素*1024像素;需要下载数据集dataset-room1_512_16和rgbd_dataset_freiburg1_desk。在一键安装ROS后,只需要再安装Pangolin即可,其他所有的需要都已经存在。用微型飞行器采集的视觉惯性数据集,包含双目相机和IMU同步测量数据及位姿的真值。第二条命令中的${ROS_PACKAGE_PATH}是自己文件的路径。其采用的相机和IMU传感器,在硬件上进行了时间同步。

琉璃轻纱的博客 1万+

从CMOS到CML:手把手教你为PLL选对分频器电路(附性能对比与选型指南)

本文深入解析了PLL分频器电路的三大主流架构——静态CMOS、动态TSPC和CML,通过性能参数对比和实测数据,提供了从频率需求、功耗预算到噪声防护的完整选型指南。特别针对高频应用的CML分频器设计要点和混合架构优化方案,为射频与模拟IC设计工程师提供实用参考。

weixin_30887919的博客 458

fnmatch模块

fnmatch主要是用来判断一个文件名是否匹配”Unix shell-style wildcards”这种模式,就是平常用的那种ls *.log这样,看是否匹配。 用法很简单,常用也就这两个函数fnmatch/filter: fnmatch. fnmatch(filename, pattern) 测试filename字符串是否匹配pattern字符串,返回True或False。 fnmatch支持...

错位的梦寐的博客 1994

Ubuntu22.04 网络图标消失与连接故障排查指南(附实战修复流程)

本文详细介绍了Ubuntu22.04系统中网络图标消失与连接故障的排查与修复方法。通过ifconfig、dhclient等命令诊断问题,提供从紧急恢复网络连接到深度排查的完整解决方案,帮助用户快速恢复网络功能并预防类似问题再次发生。

weixin_28481133的博客 287

C++实现的字符串模糊匹配

C++基本没有正则表达式功能,当然像Boost里提供了正则。本文来源于博客园园友的一篇文章,请看: C/C++ 字符串模糊匹配 很早之前就看过这篇文章,原作者的需求很明确、代码实现也很好。 之所以又写这篇文章,是因为原作者只介绍了在Linux系统下直接调用系统函数fnmatch即可实现,而没有考虑在Windows在的使用。 本人这周看了下Google-glog代码,恰巧发现了一个类似fnm...

weixin_30832351的博客 1232

文献阅读笔记:量子微波测量技术综述

量子微波测量技术研究进展:量子微波测量技术利用里德堡原子与微波电场的相干相互作用,突破了传统测量方法的物理限制。该技术基于电磁诱导透明效应和里德堡原子能级跃迁原理,通过激光激发原子并监测光谱变化来测量微波电场强度。相比传统方法,量子微波测量具有超高灵敏度(理论极限可达nV/cm)、宽动态范围(超过100dB)、小型化等显著优势,且测量结果可直接溯源至普朗克常数。典型实验系统包括光源、原子气室和探测器,采用光谱法、干涉法等多种测量方法。近年来,该技术在基础研究和应用方面取得重要进展,展现出在通信、雷达、计量等

Grow into a more wonderful you 988

用友U8 API 二次开发:WebService封装7个核心DLL引用与U8Login登录避坑

本文详细介绍了用友U8 API二次开发中的WebService封装与U8Login登录优化实践。通过7个核心DLL的正确引用、U8Login登录机制的深度解析及IIS环境下的特殊处理方案,为开发者提供了一套高可用性的通用解决方案,助力企业实现ERP系统的高效集成与数字化转型。

weixin_42524171的博客 505

Python fnmatch模块和compile正则匹配的使用

我的testfnmatch模块 fnmatch模块 fnmatch 全称是file name match,文件名匹配。支持unix shell的通配符。 | 模式 | 含义 | |–|--| | * | 匹配所有 | | ? | 匹配所有单个字符 |

xnxygxp的博客 580

AUTOSAR从入门到精通-复杂设备驱动(CDD)

CDD是复杂设备驱动的首字母缩写主要为驱动程序或复杂驱动程序,但不限于驱动程序。复杂驱动程序是一种未被AUTOSAR标准化的软件实体,可以通过AUTOSAR接口和/或基本软件模块api访问。 CDD是位于基础软件复杂驱动层的特定模块,与标准BSW模块或Rte交互。 CDD可能需要与分层软件体系结构的模块连接 分层软件架构的模块可能需要连接到CDD CDD可能需要通过Rte连接swc。

getusushu的博客 4195

Python fnmatch模块:用于文件名的匹配

Python fnmatch模块:用于文件名的匹配 fnmatch 模块主要用于文件名称的匹配,其能力比简单的字符串匹配更强大,但比使用正则表达式相比稍弱。。如果在数据处理操作中,只需要使用简单的通配符就能完成文件名的匹配,则使用 fnmatch 模块是不错的选择。 fnmatch 模块中,常用的函数及其功能如表 1 所示。 Python fnmatch模块常用函数及功能 函数名 功能 fnmatch.filter(names, pattern) 对 names 列表进行过滤,返回 name

ccc369639963的博客 1281

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Python中的fnmatch模块,主要用于文件名的匹配

1.fnmatch():判断是否与指定的字符串匹配,格式: fnmatch.fnmatch(file,'*.py'),file为字符串类型,其中*.py,可以简单的用类似正则来表示: def run(): for file in os.listdir('.'): #os.listdir返回指定的文件夹包含的文件或文件夹的名字的列表 if fnmatch.fnmatch(file, '*.py'): #判断是否有后缀为.py的文件,*代表文件名长度格式不限制。 ..

weixin_42689746的博客 2874

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

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

4.3、fnmatch:文件名匹配

fnmatch:文件名匹配

融码一生:专注 Python、C/C++、Linux、机器学习 & 深度学习、NLP、算法领域分享 552

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

python自定义文件名_Python通过fnmatch模块实现文件名匹配

fnmatch 模块主要用于文件名称的匹配,其能力比简单的字符串匹配更强大,但比使用正则表达式相比稍弱。。如果在数据处理操作中,只需要使用简单的通配符就能完成文件名的匹配,则使用 fnmatch 模块是不错的选择。fnmatch 模块中,常用的函数及其功能如表 1 所示。Python fnmatch模块常用函数及功能函数名功能fnmatch.filter(names, pattern)对 name...

weixin_39682940的博客 244

python3从零学习-5.4.8、fnmatch — Unix文件名模式匹配

源代码:Lib/fnmatch.py 此模块提供了 Unix shell 风格的通配符,它们并不等同于正则表达式(关于后者的文档参见re 模块)。 shell 风格通配符所使用的特殊字符如下: 模式 含义 * 匹配所有 ? 匹配任何单个字符 [seq] 匹配seq中的任何字符 [!seq] ...

山海皆可平z 228

Python 文件名模式匹配:fnmatch 模块详解

在 Python 编程中,我们常常需要根据特定的模式来匹配文件名。fnmatch模块提供了 Unix 风格的文件名模式匹配功能,它可以帮助我们轻松地检查文件名是否符合特定的模式。本教程将结合官方文档(https://docs.python.org/zh-cn/3.12/library/fnmatch.html ),详细讲解fnmatch模块的核心功能、使用方法以及应用场景。fnmatch模块实现了 Unix 风格的文件名模式匹配规则。它允许你使用通配符来创建灵活的模式,然后检查文件名是否与这些模式匹配。

Tekin 是深耕技术 20 年的全栈实战派专家,精通 Go/Python/Java 等多语言开发。博客专注技术原理与实战结合,深度解析 Python 高阶编程、Go 语言架构、数据库优化等硬核内容。涵盖并发编程、机器学习、云原生等前沿领域,通过真实案例拆 1438

fnmatch模块的使用

fnmatch模块的使用 此模块的主要作用是文件名称的匹配,并且匹配的模式使用的unix shell风格。 fnmatch比较简单就4个方法分别是:fnmatch,fnmatchcase,filter,translate 1.fnmatch fnmatch.fnmatch(filename, pattern) 测试filename,是否符合patte...

测试0901-1 216

python:fnmatch --- Unix 文件名模式匹配

python:fnmatch --- Unix 文件名模式匹配

FuncPlotCalc 371

python模块名 文件名 区别_Python——模块——fnmatch(文件名对比)

一、模块作用fnmatch 模块主要用于文件名的比较,使用 Unix shell 使用的 glob 样式模式。二、简单匹配fnmatch()将单个文件名与模式进行比较并返回布尔值,来看它们是否匹配。当操作系统使用区分大小写的文件系统时,比较区分大小写。实例:模式匹配所有以'fnmatch_'开头和以'.py'结尾的文件import fnmatchimport os#需要匹配的文件名及后缀...

weixin_39615419的博客 520

每周一个 Python 标准库 | fnmatch

技术博客:https://github.com/yongxinz/tech-blog 同时,也欢迎关注我的微信公众号 AlwaysBeta,更多精彩内容等你来。 fnmatch 模块主要用于文件名的比较,使用 Unix shell 使用的 glob 样式模式。 简单匹配 fnmatch() 将单个文件名与模式进行比较并返回布尔值,来看它们是否匹配。当操作系统使用区分大小写的文件系统时,比较区分大...

AlwaysBeta 的专栏 442

深入理解 fnmatch 函数的实现

pattern:这是包含模式匹配的通配符的字符串(例如 *.txt),它指示了要匹配的文件名的模式。string:要进行匹配的文件名或字符串。flags:指定匹配的选项(如是否区分大小写,是否支持正则表达式等)。常见的 flags 包括:FNM_CASEFOLD:忽略大小写。FNM_PATHNAME:仅匹配路径分隔符(通常是 /)的部分。FNM_PERIOD:.只能以明文进行匹配,不可以再使用?或*进行匹配。

一个小孩 951

python 文件名匹配_Python通过fnmatch模块实现文件名匹配

fnmatch 模块主要用于文件名称的匹配,其能力比简单的字符串匹配更强大,但比使用正则表达式相比稍弱。。如果在数据处理操作中,只需要使用简单的通配符就能完成文件名的匹配,则使用 fnmatch 模块是不错的选择。fnmatch 模块中,常用的函数及其功能如表 1 所示。Python fnmatch模块常用函数及功能函数名功能fnmatch.filter(names, pattern)对 name...

weixin_39808893的博客 385
上一篇: 【C语言】判断文件是否存在
下一篇: 【sys/power】freeze、standby、mem、disk四个电源状态
money_yuan
博客等级 码龄10年 104粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值