java glob模式匹配_glob 模式匹配简介

本文介绍了Java中的glob模式匹配,包括其在项目中的应用、fnmatch函数的使用,以及相关源代码的分享。文章提到了两种不同的源代码实现,分别是Apple和Linux的,并提供了部分核心代码。此外,还解释了glob的原理,如通配符匹配规则和方括号表达式的含义。
摘要由CSDN通过智能技术生成

转自:http://www.zybang.com/question/62a9c6f4f875fc3cab6dead25a3a7ad8.html

英文原版地址:http://www.man7.org/linux/man-pages/man7/glob.7.html

个人观点:最近项目需要用到了模式匹配路径下的文件名的功能,网上的资料几乎都是一样的,还是看man手册里写的比较全面。

我使用了系统函数fnmatch,第三个参数写得是0, 实现了* ? 【】的模式匹配, 和正则表达式还差很多, 但是这个功能也比较不错了,

在网上找了源代码,有两份,一份是apple的,另一份是linux的。

apple源代码:http://www.man7.org/linux/man-pages/man3/glob.3.html

linux源代码详见coreutils-8.25/lib/fnmatch.c以下粘出部分代码:

int

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

{

# if HANDLE_MULTIBYTE

# define ALLOCA_LIMIT 2000

if (__builtin_expect (MB_CUR_MAX, 1) != 1)

{

mbstate_t ps;

size_t patsize;

size_t strsize;

size_t totsize;

wchar_t *wpattern;

wchar_t *wstring;

int res;

/* Calculate the size needed to convert the strings to

wide characters. */

memset (&ps, '\0', sizeof (ps));

patsize = mbsrtowcs (NULL, &pattern, 0, &ps) + 1;

if (__builtin_expect (patsize != 0, 1))

{

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值