RegEx соответствует открытым тегам, за исключением автономных тегов XHTML
http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html
Использование регулярных выражений для разбора HTML: почему бы и нет?
Когда вы закончите читать, те вернутся:)
Редактировать: и чтобы действительно решить вашу проблему, взгляните на этот модуль:
http://perlmeme.org/tutorials/html_parser.html
Пример для анализа html-файла:
#!/usr/local/bin/perl
use HTML::TreeBuilder;
$tree = HTML::TreeBuilder->new;
$tree->parse_file('C:\Users\Stefanos\workspace\HTML_Parser_Test\test.html');
@divs = $tree->find('div');
$tree->delete;
В этом примере я просто использовал ваши теги в качестве основной части файла .html.Div хранятся в массиве @divs.Поскольку я понятия не имею, какой текст вы хотите найти, потому что ** не является элементом, я не могу вам помочь в дальнейшем ..
PS Я никогда не использовал этот модуль, но я сделал это всего за 5 минут, поэтомуне так сложно разобрать html-файл и найти то, что вы хотите ..
Регулярное выражение для соответствия любому конкретному тегу и хранилищу содержимого приводит к $ 1:
if ($subject =~ m!<tagname[^>]*>(.*?)</tagname>!s) {
# Successful match
}
Хотя вы скороосознайте ограничения этого подхода, когда у вас есть вложенные элементы ..
Замените тэг на фактический тэг .. например, в вашем случае i, a, span, div, хотя для div вы также получите содержимое первого divчто не то, что вы хотите ..