我有以下的正則表達式,得到我create index語句的表名和列細節:C#正則表達式NSRegularExpression
Regex r = new Regex(@"create\s*index.*?\son\s*\[?(?<table>[\s\w]*\w)\]?\s*\((?:(?<cname>[\s\d\w\[\]]*),?)*\)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
我想在Objective-C中使用此。我試過以下內容:
NSError * error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern: @"create\\s*index.*?\\son\\s*\\[?([\\s\\w]*\\w)\\]?\\s*\\((?:([\\s\\d\\w\\[\\]]*),?)*\\)"
options: NSRegularExpressionCaseInsensitive | NSRegularExpressionSearch
error: &error];
if(nil != error)
{
NSLog(@"Error is: %@. %@", [error localizedDescription], error);
}
NSRange rangeOfFirstMatch = [regex rangeOfFirstMatchInString: createStatement options:0 range: NSMakeRange(0, [createStatement length])];
NSArray *matches = [regex matchesInString: createStatement
options: 0
range: NSMakeRange(0, [createStatement length])];
部分工作。它給了我三個範圍。第一個包含整個字符串,第二個包含表名。問題是第三個是空的。
任何人有任何想法,我哪裏會出錯?
編輯:我試圖解析字符串是:CREATE INDEX cardSetIndex ON [卡](cardSetId ASC)