【发布时间】:2017-07-25 09:01:36
【问题描述】:
大家好,
我正在摸索将regular expression 放入NSPredicate。
我想将我们所有的缩略图从 Documents 目录移动到 Caches 目录中,并捕获所有我创建的正则表达式:_thumb(@[2-3]x)?\.jpg。
Here on regex101.com 你可以看到上面的正则表达式处理这个测试数据:
grwior_thumb.jpg <- match
grwior.jpg
vuoetrjrt_thumb@2x.jpg <- match
vuoetrjrt.jpg
hafiruwhf_thumb.jpg <- match
hafiruwhf_thumb@2x.jpg <- match
hafiruwhf_thumb@3x.jpg <- match
hafiruwhf.jpg
但是当我把它放在代码中时,它什么都不匹配:
NSError *error = nil;
NSFileManager *fileManager = [NSFileManager defaultManager];
// Find and move thumbs to the caches folder
NSArray<NSString *> *mediaFilesArray = [fileManager contentsOfDirectoryAtPath:documentsPath error:&error];
NSString *regex = @"_thumb(@[2-3]x)?\\.jpg";
NSPredicate *thumbPredicate = [NSPredicate predicateWithFormat: @"SELF ENDSWITH %@", regex];
NSArray<NSString *> *thumbFileArray = [mediaFilesArray filteredArrayUsingPredicate:thumbPredicate];
thumbFileArray 总是有 0 个元素...
我做错了什么?
【问题讨论】:
-
在模式的开头添加
.*,@".*_thumb(@[2-3]x)?\\.jpg"。 -
还要注意
ENDSWITH只是不“支持”正则表达式模式。请参阅下面的扩展答案。
标签: ios objective-c regex nspredicate nsfilemanager