我有很多像这样的电影片段的NSStrings:
@"Accepted (2006)"
@"Blade Runner (1982)"
@"(500) Days of Summer (2009)"
@"RoboCop (1987) - Criterion #23"
我正试图获得总是在(和)标题之间的四位数字年份。
这样做的正确方法是什么? NSRange?正则表达式?别的什么? Objective-C拜托,不是斯威夫特。
答案 0 :(得分:4)
使用基于环视的正则表达式。
multiprocessing.util
或
使用捕获组。
"(?<=\\()\\d{4}(?=\\))"
由于"\\((\\d{4})\\)"
,(
是正则表达式元字符,因此您需要按顺序转义这些字符以匹配文字)
或(
符号。
即
)
答案 1 :(得分:1)
为此,使用NSString方法更简单:rangeOfString:options:使用带有后视和前瞻的正则表达式的NSRegularExpressionSearch选项:
NSRange range = [test rangeOfString:@"(?<=\\()\\d{4}(?=\\))" options:NSRegularExpressionSearch];
NSString *found = [test substringWithRange:range];
NSLog(@"found: %@", found);
输出:
发现:2006
有关详细信息,请参阅“ICU用户指南”:Regular Expressions