有时候需要从字符串中拿到符合自己需要的正则的内容,可以用到下面的方法。
/*
typedef NS_OPTIONS(NSUInteger, NSRegularExpressionOptions) {
NSRegularExpressionCaseInsensitive = 1 << 0, //不区分字母大小写的模式
NSRegularExpressionAllowCommentsAndWhitespace = 1 << 1, //忽略掉正则表达式中的空格和#号之后的字符
NSRegularExpressionIgnoreMetacharacters = 1 << 2, //将正则表达式整体作为字符串处理
NSRegularExpressionDotMatchesLineSeparators = 1 << 3, //允许.匹配任何字符,包括换行符
NSRegularExpressionAnchorsMatchLines = 1 << 4, //允许^和$符号匹配行的开头和结尾
NSRegularExpressionUseUnixLineSeparators = 1 << 5, //设置\n为唯一的行分隔符,否则所有的都有效。
NSRegularExpressionUseUnicodeWordBoundaries = 1 << 6 //使用Unicode TR#29标准作为词的边界,否则所有传统正则表达式的词边界都有效
};
*/
-(NSMutableArray *)arrayForRegex:(NSString *)regexString string:(NSString *)str
{
//https://app.tianlalu.io/download/?model=A01
//NSString *regexStr=@"model\\=\\w+";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regexString options:NSRegularExpressionCaseInsensitive error:nil];
NSArray * matches = [regex matchesInString:str options:0 range:NSMakeRange(0, [str length])];
NSMutableArray *array = [NSMutableArray array];
for (NSTextCheckingResult *match in matches) {
for (int i = 0; i < [match numberOfRanges]; i++) {
NSString *component = [str substringWithRange:[match rangeAtIndex:i]];
[array addObject:component];
}
}
return array;
}