【问题标题】:Objective C Regex Extract Data from Line Containing TextObjective C 正则表达式从包含文本的行中提取数据
【发布时间】:2014-05-08 06:53:16
【问题描述】:

我正在使用目标 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”。除了,我会多次出现这样的行名。

【问题讨论】:

  • 如何显示与您正在谈论的内容相关的行代码;这里没有人是读心者(据称)。
  • @I'L'I 你是这个意思吗?

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


【解决方案1】:

您的模式与您可能想要的非常接近:

"popupName">(.*)|<[^>]*>

添加“popupName”后跟捕获组将允许您获取所需的特定信息。

在 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

【讨论】:

    【解决方案2】:

    我已经玩了一段时间了,但我使用的是 javascript,无法积极地向后看。但是,如果您的目标 C 可以让您进行积极的向后看和积极的向前看,那么您应该能够做到这一点。

    【讨论】:

    • 你有例子吗?
    • 像一个正则表达式示例?它是否适用于目标 c 并不重要。
    猜你喜欢
    • 2014-12-27
    • 1970-01-01
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 2015-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多