我有以下的正则表达式,得到我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)