2012-10-17 5 views
0

현재 NSRegularExpressions를 가르치고 있으며 RSS 피드에서 특정 항목을 필터링하는 법을 배우고 있습니다. 특히, RSS 피드는 "some text :: (Re : reply가있을 수 있습니다) text : some text"와 같은 형식으로되어 있습니다. 그 Re :를 제거하고 싶습니다. 나는 현재 가지고있는 또 다른 NSRegularExpression을 만들지 않고이 작업을 수행 할 수있는 방법이 있어야한다는 것을 알고있다. 나는 모든 상징에 대한 이해가 없다. 나는 Re :를 포착하지 않으려 고했지만, 어떻게 사용하는지 알 수는 없다. 누군가 나를 위해 이것을보고 도움의 손길을 주겠습니까?NSRegularExpressions - Xcode에서 단어 필터링하기

NSRegularExpression *reg = [[NSRegularExpression alloc] initWithPattern:@".* :: ?:Re: (.*) :: .*" options:0 error:nil]; //The() creates a capture group and an array of ranges for reg 

    //Loop through every title of the items in channel 
    for (RSSItem *i in items) { 
     NSString *itemTitle = [i title]; 
     //find mittts 
     //Find matches in the title string. The range argument specifies how much of the title to search; in this case, all of it. 
     NSArray *matches = [reg matchesInString:itemTitle options:0 range:NSMakeRange(0, [itemTitle length])]; 

     //If there was a match... 
     if ([matches count] > 0) { 
      //Print the location of the match in the string and the string 
      NSTextCheckingResult *result = [matches objectAtIndex:0]; 

      NSRange r = [result range]; 

      NSLog(@"\nMatch at {%d, %d} for %@!\n", r.location, r.length, itemTitle); 


      NSLog(@"Range : %d",[result numberOfRanges]); 
      //One capture group, so two ranges, let's verify 
      if ([result numberOfRanges] == 2) { 
       //Pull out the 2nd range, which will be the capture group 
       NSRange r = [result rangeAtIndex:1]; 

       //Set the title of the item to the string within the capture group 
       [i setTitle:[itemTitle substringWithRange:r]]; 

       NSLog(@"%@", [itemTitle substringWithRange:r]); 
      } 
     } 
    } 

답변

0

마음에 듭니다. 나는 필요로했다 (? : Re :)? 그것을 막기 위해.