Это может немного смущать, так как я немного новичок в Objective-C. У меня приложение уже получает исходный код:
NSURL *URL = [NSURL URLWithString:@"google.com"];
NSString *webData= [NSString stringWithContentsOfURL:URL encoding:NSASCIIStringEncoding error:nil];
Это правильно получает исходный код, я зарегистрировал его и проверил. Я хочу найти только ссылки внутри этой строки, поэтому что-нибудь с ключевым словом:
<a href
Я попытался найти строку, например:
if ([webData containsString:@"<a href="]) {
NSLog(@"string contains!");
} else {
NSLog(@"string does not contain");
}
Он всегда возвращает отрицательный результат, и я не понимаю, почему. Я хочу получить только строки кода, которые содержат ссылки, и установить эти строки в новую строку. Строка будет содержать все ссылки на источник, но я не знаю, как это сделать. Я надеюсь, что предоставил достаточно информации, и если у вас есть какие-либо вопросы по моей проблеме, пожалуйста, задавайте. Спасибо.
РЕДАКТИРОВАТЬ 1
Я попытался дать ответ, и это мой следующий код
NSURL *URL = [NSURL URLWithString:@"google.com"];
NSString *webData= [NSString stringWithContentsOfURL:URL encoding:NSASCIIStringEncoding error:nil];
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\<a href=\"(.*)\".*<\/a\>"
options:NSRegularExpressionCaseInsensitive
error:&error];
NSUInteger numberOfMatches = [regex matchesInString:webData
options:0
range:NSMakeRange(0, [webData length])];
Сначала он не работает, и я получаю следующие ошибки / предупреждения: предупреждения
РЕДАКТИРОВАТЬ 2
Я попытался исправить код, и мой текущий
NSURL *URL = [NSURL URLWithString:@"google.com"];
NSString *webData= [NSString stringWithContentsOfURL:URL encoding:NSASCIIStringEncoding error:nil];
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\<a.+?\\>.+?\\<\\/a\\>"
options:NSRegularExpressionCaseInsensitive
error:&error];
NSArray *matches = [regex matchesInString:webData
options:0
range:NSMakeRange(0, [webData length])];
NSLog(@"%@", matches);
Выводится журнал:
2018-11-05 00:12:51.144009-0500 InjectionTest[42684:6739102] (
"<NSSimpleRegularExpressionCheckingResult: 0x6000037b2c00>{25654, 124}{<NSRegularExpression: 0x600002ca0210> \\<a.+?\\>.+?\\<\\/a\\> 0x1}",
"<NSSimpleRegularExpressionCheckingResult: 0x6000037b2cc0>{38864, 316}{<NSRegularExpression: 0x600002ca0210> \\<a.+?\\>.+?\\<\\/a\\> 0x1}",
"<NSSimpleRegularExpressionCheckingResult: 0x6000037b2340>{39939, 105}{<NSRegularExpression: 0x600002ca0210> \\<a.+?\\>.+?\\<\\/a\\> 0x1}",
"<NSSimpleRegularExpressionCheckingResult: 0x6000037b2100>{40051, 103}{<NSRegularExpression: 0x600002ca0210> \\<a.+?\\>.+?\\<\\/a\\> 0x1}",
"<NSSimpleRegularExpressionCheckingResult: 0x6000037b2000>{40203, 125}{<NSRegularExpression: 0x600002ca0210> \\<a.+?\\>.+?\\<\\/a\\> 0x1}",
"<NSSimpleRegularExpressionCheckingResult: 0x6000037b2140>{41190, 91}{<NSRegularExpression: 0x600002ca0210> \\<a.+?\\>.+?\\<\\/a\\> 0x1}",
"<NSSimpleRegularExpressionCheckingResult: 0x6000037b0f00>{41297, 67}{<NSRegularExpression: 0x600002ca0210> \\<a.+?\\>.+?\\<\\/a\\> 0x1}",
"<NSSimpleRegularExpressionCheckingResult: 0x6000037b2d80>{41479, 124}{<NSRegularExpression: 0x600002ca0210> \\<a.+?\\>.+?\\<\\/a\\> 0x1}"
)
Я почти уверен, что это не то, что я должен получить.