です。CocoaアプリケーションでRKLを使用して、ラップされたタスクのログステートメントを解析しています。RegexKitLiteが一致していない、Perlでサポートされているチェッカーは
パターン:
(?:.+) \[.+?\] (.+) \[.+?\] logged in (?:.+)
テストデータ:私はインターネット上で試した
2011-07-11 00:48:19 [INFO] Preparing spawn area: 97
2011-07-11 00:48:19 [INFO] Done (2175837000ns)! For help, type "help" or "?"
2011-07-11 00:48:42 [INFO] mikeyward [/127.0.0.1:59561] logged in with entity id blahblah
すべての正規表現テスターが正常に三行目とキャプチャ 'mikeyward' にマッチします。 searchStringのが有効であり、サンプルデータが含まれ、RKLはラインと一致しないことを保証する、ましてやユーザー名をキャプチャするためにチェックしたにも関わらず :
Objective-Cのコード:
NSString *loggedInPattern = @"(?:.+) \\[.+?\\] (.+) \\[.+?\\] logged in (?:.+)";
NSArray *captures = [searchString arrayOfCaptureComponentsMatchedByRegex:loggedInPattern];
NSString *username = [captures objectAtIndex:0];
問題。上記の例では、キャプチャ配列にゼロオブジェクトが返され、エラーチェックが行われないため例外がスローされます:)
正規表現チェッカーがマッチとキャプチャを確認してもRKLが間違っている理由を理解する助けとなります非常に高く評価。
ありがとう〜
マルチラインモードは、ラインアンカー( '^'と '$')の動作にのみ影響し、それらは使用していません。 –