gpt4 book ai didi

objective-c - 将正则表达式与字符串(文件名)匹配

转载 作者:可可西里 更新时间:2023-11-01 03:52:31 26 4
gpt4 key购买 nike

我试图区分 2 个文件(NSString 格式)。据我所知,这可以通过比较和匹配正则表达式来完成。我拥有的 2 个 jpg 文件的格式是:

黄油.jpg

butter-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!");
}

编辑:

我尝试使用以下方法:

NSString *regEx = @"[a-z]+-[0-9]+.+jpg"; 

尝试匹配:

NSString *exampleFileName = [NSString stringWithFormat:@"abcdefg-112323.jpg"];

测试:

abc-11.jpg(匹配)

abcsdas-.jpg(不匹配)

abcdefg11。 (没有匹配)

abcdefg-3123.jpg(匹配)

到目前为止它可以工作,但我想消除它可能不工作的任何可能性,任何输入?

最佳答案

NSString *regEx = @"[a-z]+-[0-9]+.+jpg"; 

对于 butter.jpg 会失败,因为它需要一个 - 并且至少在数字上。

NSString *regEx = @"[a-z]+(-[0-9]+){0,1}.jpg"; 

如果你这样做了

NSString *regEx = @"([a-z])+(?:-([0-9])+){0,1}.jpg"; 

您可以访问您以后可能希望作为捕获组的信息。

(...) |Capturing parentheses. Range of input that matched the parenthesized subexpression is available after the match.

如果你不需要捕获组

NSString *regEx = @"(?:[a-z])+(?:-[0-9]+){0,1}.jpg"; 

(?:...)| Non-capturing parentheses. Groups the included pattern, but does not provide capturing of matching text. Somewhat more efficient than capturing parentheses.

关于objective-c - 将正则表达式与字符串(文件名)匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13948151/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com