我正在尝试使用正则表达式将字符串划分为各个部分,例如用制表符分隔。我想将每个部分存储在其他地方,所以我的问题是如何正确使用正则表达式的所有结果?可以说我的正则表达式是这样的:
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(?:\t|^)([^\"\t]+|\"(?:[^\"]|\"\")*\")?"
options:NSRegularExpressionCaseInsensitive error:&error];
NSUInteger numberOfMatches = [regex numberOfMatchesInString:string
options:0 range:NSMakeRange(0, [string length])];
我一次读取我的文件一行(出于某种原因需要这样做),所以这是我用来在每一行中搜索子字符串的代码的一部分:
for(int i=0;i<[myFile numberOfLines];i++){
aRow = [[myFile fileRows] objectAtIndex:i];
NSArray* results = [regex matchesInString:aRow options:0 range:NSMakeRange(0, [aRow length])];
for (NSTextCheckingResult* result in results) {
NSString* resultString = [string substringWithRange:result.range];
NSLog(@"I should be storing this as a correctly separated word:\t%@",resultString);
}
}
我在做什么错/错过了什么?打印的结果没有显示我认为他们应该显示的内容...(myFile / fileRows / numberOfLines / current row / aRow 工作正常,并包含他们应该在发布前检查、双重检查和三重检查的内容)
额外信息: 输入文件:
number letter data something
1 g dvsfg sdf
2 az "dbfghe fgh" s
4 b wdf fghfgh
3 c sdgy fdgh
5 d egfn dkjfghfgkhj
返回(NSLog-wise:)
_____________number letter data something
_____________number letter
_____________numbe
_____________r da
_____________a
_____________number letter
_____________number letter
_____________number letter data s
代替:
number
letter
data
something
1
g
dvsfg
...等(你明白了,每个选项卡在不同的 NSLog 消息中分隔“单词”)