Objective C正则表达式从包含文本的行中提取数据

时间:2014-03-28 17:09:02

标签: html objective-c regex parsing html-parsing

我正在使用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”。除此之外,我会多次出现这样的行名称。

2 个答案:

答案 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可以让你做一个积极的外观和积极的前瞻,你应该能够做到这一点。