Нужна помощь в создании регулярного выражения или сценария для запуска на HTML-файл - PullRequest
2 голосов
/ 01 сентября 2011

Итак, у меня есть этот индекс, над которым я работаю, но я действительно считаю, что это хлопотно, чтобы вручную и перекрестно связать все. Я знаю немного о регулярных выражениях и немного Perl. вот как выглядит HTML

cf. <i>Penitencia y Reconciliaci&oacute;n</i>

но иногда есть экземпляр этого

cf. <i>Advenimiento, Consumaci&oacute;n, Expectaci&oacute;n</i>;

Я запустил это регулярное выражение:

cf\. <i>([^,]+,)</i>

но моя цель состоит в том, чтобы иметь возможность запустить регулярное выражение, которое обернет вокруг одного или нескольких слов, а затем скопирует внутренний Html «фразы» и вставит его в тег привязки как то так

cf. <i><a href="#Penitencia y Reconciliaci&oacute;n">Penitencia y Reconciliaci&oacute;n</a></i>

что я смог выполнить с помощью приведенного выше выражения; но проблема в том, что мое регулярное выражение не принимает учитывая, что может быть две «фразы», ​​которые нужно обернуть вокруг себя. Поэтому моя цель - закончить так:

cf. <i><a href="#Advenimiento">Advenimiento</a>, <a href="#Consumaci&oacute;n">Consumaci&oacute;n</a>, <a href="#Expectaci&oacute;n">Expectaci&oacute;n</a></i>;

любая помощь будет очень признательна

1 Ответ

1 голос
/ 19 сентября 2011

В контексте создания программы для автоматизации этого, лучшее, более твердое, быстрое и более сильное решение - я согласен с комментарием к OP - будет использовать DOM для поиска / анализа / запроса тегов, получения Значения, затем измените и перепишите их. На вашем конкретном примере я предполагаю, что это одноразовая операция поиска и замены, или что-то, что вы не возражаете - запуск замены вручную время от времени ...

Perl s // - выражение (в данном случае, я думаю, p !! - выражение), которое было протестировано только в эмуляторе:

s!(?<=,)(\s?)([^<,]+)(?=,|</i>)|(?<=<i>)([^<,]+)(?=,|</i>)!$1<a href="#$2$3">$2$3</a>!i

Имейте в виду, что, как написано, это будет соответствовать только элементам, заключенным в теги <i>, и, конечно, не терпит других тегов между ними - лишь некоторые из причин, по которым вы не должны вставлять это в программный код. ..

Выражение превращает этот HTML:

Parte del texto inicial. <i>Penitencia y Reconciliaci&oacute;n</i> 
<i>Advenimiento, Consumaci&oacute;n, Expectaci&oacute;n</i>; Otro texto que <em>no es especial</em> ... <i>Otra etiqueta que debe estar vinculada</i>
Otra l&iacute;nea <i>con un enlace</i> y un texto m&aacute;s.

в этот текст:

Parte del texto inicial. <i><a href="#Penitencia y Reconciliaci&oacute;n">Penitencia y Reconciliaci&oacute;n</a></i> 
<i><a href="#Advenimiento">Advenimiento</a>, <a href="#Consumaci&oacute;n">Consumaci&oacute;n</a>, <a href="#Expectaci&oacute;n">Expectaci&oacute;n</a></i>; Otro texto que <em>no es especial</em> ... <i><a href="#Otra etiqueta que debe estar vinculada">Otra etiqueta que debe estar vinculada</a></i>
Otra l&iacute;nea <i><a href="#con un enlace">con un enlace</a></i> y un texto m&aacute;s.

В качестве примечания: Ваш вопрос довольно сложно прочитать, и, вероятно, следовало бы также отметить его тегом [perl]; это, вероятно, внесло значительный вклад в то, что на него не ответили некоторое время ... но лучше поздно, чем никогда!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...