0

我正在尝试使用正则表达式将字符串划分为各个部分,例如用制表符分隔。我想将每个部分存储在其他地方,所以我的问题是如何正确使用正则表达式的所有结果?可以说我的正则表达式是这样的:

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 消息中分隔“单词”)

4

1 回答 1

1

从我上面的评论:

NSString* resultString = [string substringWithRange:result.range];

应该

NSString* resultString = [aRow substringWithRange:result.range];
于 2013-11-05T21:18:16.363 回答