регулярное выражение цель-c.разбор HTML - PullRequest
0 голосов
/ 06 сентября 2011

Мне нужно получить значение хеш-переменной из содержимого html-страницы. Это выглядит так:

//...html code...
var somehash = '12d51e50f4';
//...html code...

Как получить значение в кавычках, используя Regexp или что-то еще?

Ответы [ 2 ]

2 голосов
/ 06 сентября 2011

Это шаблон регулярного выражения, который соответствует указанной строке кода и извлекает значение хеш-функции в первую группу захвата:

\bvar\s+somehash\s*=\s*'([0-9A-F]+)';

1 голос
/ 06 сентября 2011

@ Тимур прав в том, что прежде чем задавать этот тип вопросов, вы должны действительно прочитать документацию. Тем не менее, вот один из способов сделать то, что вы просите. Возможно, вы захотите настроить регулярное выражение для ваших конкретных потребностей. Этот код был скомпилирован с помощью инструмента командной строки, связывающего только с платформой Foundation:

int main (int argc, const char * argv[])
{
    @autoreleasepool {
        NSString *html = @"<html>\n<head>\n<title>Test</title>\n</head>\n<body>var someHash = '123abc';</body></html>";
        NSRegularExpression *regexp = [NSRegularExpression regularExpressionWithPattern:@"var someHash = '(\\w*)';" options:NSRegularExpressionCaseInsensitive error:NULL];
        NSTextCheckingResult *match = [regexp firstMatchInString:html options:0 range:NSMakeRange(0, html.length)];
        if (match) {
            NSRange  hashRange = [match rangeAtIndex:1];
            NSString *hashCode = [html substringWithRange:hashRange];
            NSLog(@"Hash Code is %@", hashCode);
        }
    }
    return 0;
}

Для производственного кода вы захотите проверить на ошибки.

...