gpt4 book ai didi

c++ - 有没有办法仅对斜杠的第一个实例应用 fnmatch 的 FNM_PATHNAME 标志?

转载 作者:行者123 更新时间:2023-11-30 19:01:07 25 4
gpt4 key购买 nike

嗨,我正在尝试想出一种方法,使用 fnmatch 和某些规则来执行通配符屏蔽。

在字符串中找到斜杠“/”的第一个实例时,它必须与模式中的斜杠“/”完全匹配。即通配符('*')将无法匹配。但是,可以使用通配符来匹配输入字符串中的后续斜杠。

例如想要的结果:

字符串 a/b/c 应使用 / 进行匹配。即“b”之后的第二个“/”匹配,但不匹配“a”之后的第一个斜杠。

字符串: a/b/c 模式: / 结果: 匹配。因为 str 中第一个“/”实例的模式中有一个显式的“/”

字符串: a/b/c 模式: * 结果: 不匹配。因为 str 中第一个“/”实例没有显式的“/”

我已经使用 fnmatch 尝试了以下代码部分

int match(char pat[], char str[])
{
int rVal = fnmatch(pat, str, FNM_PATHNAME);
return rVal;

}

-> 如果我需要将字符串中的每个“/”映射到模式中的“/”,则使用 FNM_PATHNAME 标志的上述代码可以成功工作。但如果我需要将其限制为仅第一个实例,则不需要。

-> 我可以继续使用 fnmatch 来解决这个问题,还是需要依赖任何其他 posix 功能。请帮忙。

最佳答案

不,没有办法直接使用 fnmatch 执行此操作,但您可以在第一个 / 处将模式分成两部分,然后拆分所有候选者字符串同样在其第一个 / 处,并分别匹配第一部分和第二部分。

关于c++ - 有没有办法仅对斜杠的第一个实例应用 fnmatch 的 FNM_PATHNAME 标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58367001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com