我在iOS中,但几乎所有语言都会翻译。
我正在尝试编写一个正则表达式来匹配根目录:
即:
首先/应该匹配 First / file.txt不应该匹配 第一个/下一个不应该匹配 第一个/下一个/ 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 :(得分:2)
正则表达式为:
^[^/]*/$
这可以确保字符串以斜杠结尾,并且在它之前可以包含0个或更多非斜杠字符。
另一个解决方案(没有正则表达式)将是:
NSString *name = ... // some path
if (name.length && [name rangeOfString:@"/"].location == name.length - 1) {
// root directory
}