Цель C Regex Извлечь данные из строки, содержащей текст

0

Я использую цель 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>

Из этого я хотел бы извлечь только "Боб Смит". Кроме того, я бы имел несколько вхождений в именах строк.

  • 0
    Как насчет показа строчного кода, относящегося к тому, о чем вы говорите; Здесь никто не читает мысли (якобы).
  • 0
    @I'L'I I'L'I Ты это имеешь в виду?
Показать ещё 1 комментарий
Теги:
parsing
html-parsing

2 ответа

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
0

Я немного поиграл с этим, но я использую javascript и не могу сделать положительный lookbehind. Но если ваша цель C может позволить вам сделать позитивный взгляд и положительный взгляд, вы должны это сделать.

  • 0
    У вас есть пример?
  • 0
    Как пример регулярного выражения? Неважно, работает ли это в цели c или нет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню