【问题标题】:Regular expression to match multiple occurrences of characters between delimiters正则表达式匹配分隔符之间多次出现的字符
【发布时间】:2014-07-18 13:04:01
【问题描述】:

我正在尝试使用 NSRegularExpression 查找由一对 % 字符分隔的子字符串的多次出现,例如,如果我想从以下内容中提取“%FirstOccurence%enter code here”作为子字符串:

"stuff %FirstOccurence% more stuff" 

那么我可以这样做:

NSString* const pattern = @"[%].+[%]";
NSRegularExpression* regex = [[NSRegularExpression alloc] initWithPattern:pattern
                                                                  options:0
                                                                    error:nil];
NSRange range = NSMakeRange(0, [testData length]);
NSTextCheckingResult *textCheckingResult = [regex firstMatchInString:testData options:0 range: range];

但是,如果字符串包含这样的内容:

 "stuff %FirstOccurence% more stuff %Second Occurrence% yet more stuff"

然后我的正则表达式将匹配这个:"%FirstOccurence% more stuff %Second Occurrence%" 即 NSTextCheckingResult 将包含一个范围。

为了使 NSTextCheckingResult 包含两个范围 %FirstOccurence%%Second Occurrence% 而不是一个更大的范围,正则表达式/代码应该是什么?

【问题讨论】:

    标签: objective-c regex nsregularexpression


    【解决方案1】:

    您似乎想调用 matchInString:options:range: 来返回所有匹配结果。

    NSArray *matches = [regex matchesInString:string
                                      options:0
                                        range:NSMakeRange(0, [string length])];
    

    https://developer.apple.com/library/mac/documentation/Foundation/Reference/NSRegularExpression_Class/Reference/Reference.html#//apple_ref/doc/c_ref/NSRegularExpression

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-16
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-18
      相关资源
      最近更新 更多