我需要一点有关 iPhone 正则表达式的启动知识。基本上,我在一个私人 MediaWiki 中有一个日期列表,格式为*185 BC:这里是一些事件
*2001:远晚于此的其他事件
现在,我想将其解析成一个具有 NSDate 属性和 - 比如说 - NSString 属性的对象。到目前为止,我有了以下代码:(rawContentString 包含页面的 mediawiki 语法)
NSString* regexString =@"\\*( *[0-9]{1,}.*): (.*)";
NSRegularExpressionOptions options = NSRegularExpressionCaseInsensitive;
NSError* error = NULL;
NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:regexString options:options error:&error];
if (error) {
NSLog(@"%@", [error description]);
}
NSArray* results = [regex matchesInString:rawContentString options:0 range:NSMakeRange(0, [rawContentString length])];
for (NSTextCheckingResult* result in results) {
NSString* resultString = [rawContentString substringWithRange:result.range];
NSLog(@"%@",resultString);
}
很不幸,我认为正则表达式没有按照我的期望工作,并且我不知道如何捕获匹配的日期和文本。希望能得到任何帮助。
顺便说一下:是否有关于MediaWiki语法的正则表达式模式编译?
提前致谢 Heiko *
NSRegularExpression
和 RegexKitLite 都使用libicucore
中的 ICU 正则表达式引擎。理论上它们应该提供相同的结果,但实际上可能存在一些极小的差异(例如,RegexKitLite 必须完全使用公共 API,而 NSRegularExpression 可以使用私有 API)。我认为这种差异就像 @LordT 所说的 "个人偏好"。此外,在编写本文时,RegexKitLite 几乎可以在所有 Mac OS X 和 iOS 版本上运行。 - johne