deleted-mezhevikin
@deleted-mezhevikin

Как правильно составить паттерн для NSRegularExpression?

Из строки c html необходимо получить содержимое тега script c id=«disqus-threadData».

Внутри тега находится json.


Пробовал так:
NSString *pattern = @"<script type=\"text/json\" id=\"disqus-threadData\">([^\"]+)</script>";



и так
NSString *pattern = @"<script type=\"text/json\" id=\"disqus-threadData\">(.*?)</script>";



Пример html: rghost.ru/49821723
  • Вопрос задан
  • 3312 просмотров
Решения вопроса 1
byss
@byss
int main () {
	NSFileHandle *handle = [NSFileHandle fileHandleForReadingAtPath:@"/Users/byss/Downloads/test.html"];
	NSString *haystack = [[NSString alloc] initWithData:[handle readDataToEndOfFile] encoding:NSUTF8StringEncoding];
	NSRegularExpression *re = [[NSRegularExpression alloc] initWithPattern:@"<script type=\"text/json\" id=\"disqus-threadData\">(.+?)</script>" options:NSRegularExpressionCaseInsensitive error:nil];

	[re enumerateMatchesInString:haystack options:0 range:NSMakeRange (0, haystack.length) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
		if (result.numberOfRanges == 2) {
			NSLog (@"%@", [haystack substringWithRange:[result rangeAtIndex:1]]);
		}
	}];
	return 0;
}

Похоже, что работает.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы