我正在使用objective c来创建一个程序,该程序将使用正则表达式从HTML文件中提取数据。对程序重要的唯一行包含文本popupName
,我还需要从中设置所有HTML标记。这可以用一个正则表达式完成吗?
到目前为止,我一直在使用popupName
查找我要查找的行,然后删除与<[^>]*>
匹配的所有内容。
这两个操作可以组合成一个吗?
这是示例输入:
<div>
<div class="popupName"> Bob Smith</div>
<div class="popupTitle">
<i></i>
</div>
<br />
<div class="popupTitle"></div>
<div class="popupLink"><a href="mailto:"></a></div>
</div>
由此我想只提取“Bob Smith”。除此之外,我会多次出现这样的行名称。
答案 0 :(得分:1)
你的模式非常接近你想要的增加:
"popupName">(.*)|<[^>]*>
添加&#34; popupName&#34;然后是捕获组将允许您获取所需的特定信息。
在Objective-C中:
NSString* searchText = @"<div><div class=\"popupName\"> Bob Smith</div><div class=\"popupTitle\"><i></i></div><br /><div class=\"popupTitle\"></div><div class=\"popupLink\"><a href=\"mailto:\"></a></div></div><div>";
NSString *pattern = @"\"popupName\">(.*)|<[^>]*>";
NSRange searchRange = NSMakeRange(0, [searchText length]);
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:&error];
NSString *results = [regex stringByReplacingMatchesInString:searchText options:0 range:searchRange withTemplate:@"$1"];
NSLog(@"results: %@",results);
<强>结果:强>
results: Bob Smith
答案 1 :(得分:0)
我一直在玩这个,但我使用的是javascript而且不能做一个积极的看法。但如果你的目标C可以让你做一个积极的外观和积极的前瞻,你应该能够做到这一点。