例如,有@"javascript:viewData(3713, 'A', 89360)"
字符串。
我想从字符串中提取3713,A和89360。
对于Java,“viewData\(([^\(]*),[\s\S]\'([^\(]*)\',[\s\S]([^\(]*)\)
”可以成功提取这些字符串。
但是,我无法在iOS Objective-C中成功提取它们。
我的代码如下:
NSString *searchedString = @"javascript:viewData(3713, 'A', 89360)";
NSRange searchedRange = NSMakeRange(0, [searchedString length]);
NSString *pattern = @"<HERE THE PATTERN NEEDED>";
NSError *error = nil;
NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:&error];
NSTextCheckingResult *match = [regex firstMatchInString:searchedString options:0 range:searchedRange];
然后匹配的字符串可以是:
[searchedString substringWithRange:[match rangeAtIndex:1]]
..等等。
如何设置模式?
答案 0 :(得分:1)
基本上,正则表达式模式也适用于Objective-C。
但是你必须逃避所有的反斜杠:
NSString *pattern = @"viewData\\(([^\\(]*),[\\s\\S]\\'([^\\(]*)\\',[\\s\\S]([^\\(]*)\\)";