Как я могу удалить таблицу из документа HTML? - PullRequest
1 голос
/ 11 августа 2009

Я обновляю набор веб-страниц до новой системы и хочу удалить и заменить шаблон в верхней части каждой страницы и заменить его новым шаблоном. К счастью, на каждой странице есть таблица содержимого, и перед ней нет таблиц. Я хочу сделать что-то вроде:

$contents =~ s/^.*<table/$newHeader/

Это работает только для первой строки содержимого $. Есть ли способ заменить все до (и включая) первую <таблицу в файле на мой новый шаблон? </p>

Ответы [ 2 ]

7 голосов
/ 11 августа 2009

Вы можете использовать опцию Perl "/s", которая сообщает, что "." соответствует всем символам , включая новых строк (вместо этого обрабатывайте строку как одну гигантскую строку за линию). Вы ограничиваете совпадение первой таблицей, используя квантификатор ?, чтобы сделать * нежадным:

$contents =~ s/^.*?<table/$newHeader/s

Кроме того, просто помните, что при замене также будет удален текст "<table", поэтому вам нужно будет убедиться, что он каким-то образом вставлен обратно, возможно, с помощью:

$contents =~ s/^.*?<table/<table$newHeader/s

Или вы можете использовать положительное упреждающее утверждение нулевой ширины, которое говорит, что «после совпадения это выражение также должно совпадать», но текст в проверочном утверждении не считается частью совпадения (и, следовательно, не будет подлежит замене):

$contents =~ s/^.*?(?=<table)/$newHeader/s

И это оставит "<table" без изменений.

3 голосов
/ 11 августа 2009

"." обычно соответствует любому символу, кроме новой строки. Добавьте «s» в регулярное выражение, чтобы оно совпадало с несколькими строками:

 $contents =~ s/^.*?<table/$newHeader/s;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...