Daw*_*son 6 cocoa-touch objective-c ios
我试图区分2个文件(NSString格式).据我所知,这可以通过比较和匹配正则表达式来完成.我拥有的2个jpg文件的格式是:
butter.jpg
黄油1.JPG
我的问题是我可以编写正则表达式来匹配上面的2个字符串吗?我已经搜索并找到了一个示例表达式,但我不确定它是如何阅读并认为它是错误的.
这是我的代码:
NSString *exampleFileName = [NSString stringWithFormat:@"butter-1.jpg"];
NSString *regEx = @".*l{2,}.*";
NSPredicate *regExTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regEx];
if ([regExTest evaluateWithObject:exampleFileName] == YES) {
NSLog(@"Match!");
} else {
NSLog(@"No match!");
}
Run Code Online (Sandbox Code Playgroud)
编辑:
我尝试使用以下内容:
NSString *regEx = @"[a-z]+-[0-9]+.+jpg";
Run Code Online (Sandbox Code Playgroud)
尝试匹配:
NSString *exampleFileName = [NSString stringWithFormat:@"abcdefg-112323.jpg"];
Run Code Online (Sandbox Code Playgroud)
经测试:
abc-11.jpg(匹配)
abcsdas-.jpg(不匹配)
abcdefg11.(不匹配)
abcdefg-3123.jpg(匹配)
截至目前它是有效的,但我想消除它可能没有的任何机会,任何输入?
NSString *regEx = @"[a-z]+-[0-9]+.+jpg";
Run Code Online (Sandbox Code Playgroud)
将会失败butter.jpg,因为它需要有一个-并且至少有一个数字。
NSString *regEx = @"[a-z]+(-[0-9]+){0,1}.jpg";
Run Code Online (Sandbox Code Playgroud)
如果你这样做
NSString *regEx = @"([a-z])+(?:-([0-9])+){0,1}.jpg";
Run Code Online (Sandbox Code Playgroud)
您可以稍后以捕获组的形式访问您可能希望获得的信息。
(...) |捕获括号。匹配括号内的子表达式的输入范围在匹配后可用。
如果您不需要捕获组
NSString *regEx = @"(?:[a-z])+(?:-[0-9]+){0,1}.jpg";
Run Code Online (Sandbox Code Playgroud)
(?:...)| 非捕获括号。对包含的模式进行分组,但不提供匹配文本的捕获。比捕获括号更有效。
| 归档时间: |
|
| 查看次数: |
1497 次 |
| 最近记录: |