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

时间:2015-10-09 22:19:12

标签: regex nsregularexpression

我试过这段代码

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

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

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

2 个答案:

答案 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);

答案 1 :(得分:0)

一个简单的( for generic languages )正则表达式将是:

[^>]+(?=<)

Regex live here.

希望它有所帮助。

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