嗨,我正试图想出一种方法,使用特定规则的fnmatch执行通配符屏蔽。
在字符串中找到斜杠"/"的第一个实例时,它必须与模式中的斜杠("/")完全匹配。即通配符('*')将无法匹配。不过,可以使用通配符匹配输入字符串中的后续斜杠。
所需结果的E.g:
字符串a/b/c应使用/进行匹配。即匹配"b"之后的第二个"/",但不匹配"a"之后的第一个斜线。
字符串:a/b/c模式:/ 结果:字符串:a/b/c模式:* 结果:我已经使用fnmatch 尝试了以下代码部分 ->如果我需要将字符串中的每个"/"映射到模式中的"/",则使用FNM_PATHNAME标志的上述代码可以成功工作。但如果我需要把它限制在第一个实例的话,就不是这样了。 ->我可以使用fnmatch继续处理这个问题吗?或者我需要依赖任何其他posix功能吗。请帮忙。int match(char pat[], char str[])
{
int rVal = fnmatch(pat, str, FNM_PATHNAME);
return rVal;
}
不,没有办法直接用fnmatch
来实现这一点,但您可以在第一个/
将模式一分为二,然后在第一个/
同样地拆分所有候选字符串,并分别匹配第一部分和第二部分。