2015-10-09 3 views
0

Я попробовал этот кодкак использовать регулярное выражение для соответствия содержимого между двумя тегами

"<h2 class="a-text-normal">.*</h2>" 

но это будет соответствовать целые предложения не только содержание.

<h2 class="a-text-normal">The info to be matched</h2> 
+0

Я просто хочу совместить текст «Информация, которая будет соответствовать», –

ответ

1

Вы можете использовать нежирный квантификатор, а также регулярные выражения регулярных выражений.

(?<=<h2 class="a-text-normal">).*?(?=</h2>) 

Working demo

Код

NSString *orgStr = @"<h2 class=\"a-text-normal\">The info to be matched</h2>"; 

NSString *URLRegExPattern = @"(?<=<h2 class=\"a-text-normal\">).*?(?=<\/h2>)"; 
NSError *regExErr; 
NSRegularExpression *URLRegEx = [NSRegularExpression regularExpressionWithPattern:URLRegExPattern 
                      options:0 
                      error:&regExErr]; 

NSString *URLString = nil; 

NSRange range = [URLRegEx rangeOfFirstMatchInString:orgStr 
              options:0 
               range:NSMakeRange(0, orgStr.length)]; 

if (!NSEqualRanges(range, NSMakeRange(NSNotFound, 0))) { 
    URLString = [orgStr substringWithRange:rangeOfFirstMatch]; 
} 

NSLog(@"URL: %@", URLString); 
0

Простой (для общих языков) регулярное выражение будет:

[^>]+(?=<) 

Regex live here.

Надеюсь, что это поможет.

EDIT: Если ваш язык позволяет использовать >\K или (?<=>) в начале регулярного выражения будет увеличивать скорость при поиске.

 Смежные вопросы

  • Нет связанных вопросов^_^