我在 iOS 中,但几乎任何语言都可以翻译。
我正在尝试编写一个正则表达式来匹配根目录:
即:
第一个/应该匹配
First/file.txt 不应该匹配
第一个/下一个不应该匹配
First/next/file.txt 不应该匹配
所以我认为逻辑应该从行首开始匹配除“/”之外的任何字符,然后只匹配“/”一次,并且那一次应该在字符串的末尾。
我有:
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[^\\/]*\\/$" options:NSRegularExpressionCaseInsensitive error:&error];
NSUInteger matches = [regex numberOfMatchesInString:info.name options:NSRegularExpressionCaseInsensitive range:NSMakeRange(0, [info.name length])];
if (matches > 0) {
NSLog(@"match");
} else {
NSLog(@"not a match");
}
但它没有像它应该的那样匹配。
思考
[^\\/]*
将匹配所有不是“/”的字符
然后
\\/$
将匹配字符串末尾的“/”。
我哪里错了?
最佳答案
正则表达式为:
^[^/]*/$
这确保字符串以斜杠结尾,并且它之前可以包含 0 个或多个非斜杠字符。
另一个解决方案(没有正则表达式)是这样的:
NSString *name = ... // some path
if (name.length && [name rangeOfString:@"/"].location == name.length - 1) {
// root directory
}
关于ios - 判断路径是否为根目录的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26959042/