我在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'。
Objective-C代碼:
NSString *loggedInPattern = @"(?:.+) \\[.+?\\] (.+) \\[.+?\\] logged in (?:.+)";
NSArray *captures = [searchString arrayOfCaptureComponentsMatchedByRegex:loggedInPattern];
NSString *username = [captures objectAtIndex:0];
問題: 儘管已檢查,以確保搜索字符串是有效且包含樣本數據,RKL匹配失敗的線,更不用說捕獲的用戶名。在上面的例子中,拋出異常是因爲捕獲數組返回零對象,我沒有錯誤檢查:)
任何幫助理解爲什麼正則表達式檢查器確認匹配和捕獲,但RKL錯過它會是非常感謝。
謝謝〜
多行模式隻影響行錨('^'和'$')的行爲,並且他沒有使用這些行。 –