Я использую цель 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>
Из этого я хотел бы извлечь только "Боб Смит". Кроме того, я бы имел несколько вхождений в именах строк.
Ваш шаблон довольно близок к тому, что вы, вероятно, захотите с добавлением:
"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
Я немного поиграл с этим, но я использую javascript и не могу сделать положительный lookbehind. Но если ваша цель C может позволить вам сделать позитивный взгляд и положительный взгляд, вы должны это сделать.