如何使用正则表达式匹配两个标签之间的内容

how to use regular expression to match content between two tags

我试过这个代码

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

但它会匹配整个句子,而不仅仅是内容。

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

您可以使用非贪婪量词和正则表达式环视。

(?<=<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);

一个简单的(对于通用语言)正则表达式是:

[^>]+(?=<)

Regex live here.

希望对您有所帮助。

编辑: 如果您的语言允许您在正则表达式的开头使用 >\K(?<=>),那么搜索时会提高速度。