【发布时间】:2023-11-22 11:52:01
【问题描述】:
您好,我正在尝试使用 fnmatch 和某些规则来执行通配符掩码。
在字符串中找到斜杠“/”的第一个实例时,它必须与模式中的斜杠 ('/') 完全匹配。即通配符 ('*') 将无法匹配。但是,输入字符串中的后续斜杠可以使用通配符进行匹配。
例如想要的结果:
字符串 a/b/c 应该使用 / 匹配。即匹配“b”之后的第二个“/”,但不匹配“a”之后的第一个斜杠。
string: a/b/c pattern: / Result: 匹配。因为 str 中“/”的第一个实例在模式中有一个明确的“/”
string: a/b/c pattern: * Result: 不匹配。因为 str 中“/”的第一个实例没有明确的“/”
我已经使用 fnmatch 尝试了下面的代码部分
int match(char pat[], char str[])
{
int rVal = fnmatch(pat, str, FNM_PATHNAME);
return rVal;
}
-> 如果我需要将字符串中的每个“/”映射到模式中的“/”,则使用 FNM_PATHNAME 标志的上述代码成功工作。但如果我需要将其限制为仅一审,则不是。
-> 我可以使用 fnmatch 继续处理这个问题,还是需要依赖任何其他 posix 功能。请帮忙。
【问题讨论】:
-
不太清楚你想做什么。请添加更多示例。
-
当然,我已经添加了一些示例。
标签: c++ c glob wildcard-mapping fnmatch