Я пытаюсь извлечь содержимое элемента даты из многих плохо сформированных документов sgml.Например, документ может содержать простой элемент даты, такой как
<DATE>4th July 1936</DATE>
или
<DATE blaAttrib="89787adjd98d9">4th July 1936</DATE>
, но также может быть волосатым, как:
<DATE blaAttrib="89787adjd98d9">4th July 1936
<EM>spanned across multiple lines and EM element inside DATE</EM></DATE>
Цельчтобы получить "4 июля 1936 года".Поскольку файлы не большие, я решил прочитать все содержимое в переменную и выполнить регулярное выражение.Ниже приведен фрагмент моего кода Perl:
{
local $/ = undef;
open FILE, "$file" or die "Couldn't open file: $!";
$fileContent = <FILE>;
close FILE;
if ( $fileContent =~ m/<DATE(.*)>(.*)<\/DATE>/)
{
# $2 should contain the "4th July 1936" but it did not.
}
}
К сожалению, регулярное выражение не работает для волосатого примера.Это потому, что внутри <DATE>
есть элемент <EM>
, и он также занимает несколько строк.
Может ли какая-нибудь добрая душа дать мне несколько указателей, указаний или подсказок?
Спасибо, куча!