1

ex「17% off etc」または「2% off etc etc」の正規表現式が必要なので、文字列が 1 桁または 2 桁の数字で始まり、その後にパーセント記号、スペース、および「off」という単語が続く場合

私は試した

NSPredicate* test = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", @"^[0-9]{1,2}% off"];
if ( [test evaluateWithObject:candidate] )
{
.... etc..

しかし運がない。

洞察に感謝します。

4

1 に答える 1

1

このコマンド ライン サンプル アプリでは、問題なく動作します。

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

    @autoreleasepool {

        NSArray *lines = @[ @"17% off etc.", @"2% off", @"off by 12%" ];
        NSPredicate* test = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", @"^[0-9]{1,2}% off.*"];

        [lines enumerateObjectsUsingBlock:^(NSString  *candidate, NSUInteger idx, BOOL *stop) {
            if ( [test evaluateWithObject:candidate] ){
                NSLog(@":)");
            } else{
                NSLog(@":(");
            }
        }];


    }
    return 0;
}

出力:

2012-08-08 15:46:16.213 regextest[1305:303] :)
2012-08-08 15:46:16.215 regextest[1305:303] :)
2012-08-08 15:46:16.215 regextest[1305:303] :(

行にさらに文字が含まれている場合、次のようになります

NSPredicate* test = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", @"^[0-9]{1,2}% off.*"];

これ.*は、任意の数の任意の文字が存在する可能性があることを示しています。

于 2012-08-08T13:47:24.683 に答える