1

次の NSString があります。

var param1=8;
var param2=4;
var param3=1;

そこからパラメータの値を抽出する必要があります。NSRegularExpression を使用していますが、動作させることができません:

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"var param1=(.*);\nvar param2=(.*);\nvar param3=(.*)" options:0 error:NULL];
NSTextCheckingResult *match = [regex firstMatchInString:string options:0 range:NSMakeRange(0, [string length])];
NSString *param1= [match rangeAtIndex:1];
4

2 に答える 2

1

タイトルは答えを正当化するものではありませんが、質問NSRegularExpression validate emailは、便利なオンライン正規表現チェッカーへのリンクを提供します。

私の感覚では、例の正規表現の \n 文字に問題があるということです。

のような式を検討し@"^var param[123]=\b(\w*)\b;"ます。これは 3 つの一致を提供する必要があります。の代わりにNSRegularExpressionメソッドを使用する必要がありますが、ループは非常に単純なはずです。matchesInStringfirstMatchInString

    NSArray* matches = [regex matchesInString:string
                                      options:0
                                        range:NSMakeRange(0, [string length])];
    for (NSTextCheckingResult *match in matches) {
        // per match processing
    }
于 2012-06-23T00:33:01.890 に答える
0

まず、NSRangeをNSStringにキャストします。最後の行は、次のようになります。

NSString *param1= [string substringWithRange:[match rangeAtIndex:1]];

そして第二に、多分あなたのストリングに何か問題がありますか?改行などの前に空白がある可能性があります。私がテストしたもの:

NSString *string = @"var param1=8;\n"
                    "var param2=4;\n"
                    "var param3=1;";

正常に動作しており、「8」を返します。

于 2012-06-23T07:41:50.453 に答える