嗨,我正在尝试提出一种使用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功能。请帮忙。
答案 0 :(得分:1)
否,没有一种方法可以直接通过fnmatch
来执行此操作,但是您可以在前一个/
处将模式一分为二,然后在其第一个{ {1}},并分别匹配第一部分和第二部分。