РЕГУЛЯРНОЕ ВЫРАЖЕНИЕ: рекомендуется вставлять до, после или между?

#regex #insert

#регулярное выражение #вставить

Вопрос:

я чертовски нервничаю, задавая этот вопрос, поскольку там МНОГО сообщений с регулярными выражениями. но я также прошу лучший метод, поэтому я собираюсь рискнуть (полностью ожидая повторения, если я провалю работу …)

мне дали список для переформатирования. 120 вопросов и ответов (всего 240 наборов тегов). * glark * все, что мне нужно сделать, это сделать текст между тегами ссылкой, вот так:

 <li>do snails make your feet itch?</li>
  

должно стать

 <li><a href="#n">do snails make your feet itch?</a></li>`
  

ЭТО НЕ вопрос регулярных выражений JAVASCRIPT / PHP. это ПРОСТО регулярное выражение, которое я могу ввести в поля поиска / замены моей IDE. я, вероятно, попытаюсь выполнить пакетную замену после этого с помощью PERL, чтобы вставить 'n' переменную, чтобы ссылки указывали правильно.

и я знаю, что вы спросите: «Если вы можете использовать PERL для этого, почему бы не использовать всю эту чушь?» и это правильный вопрос, но я хочу больше использовать регулярные выражения для больших списков, подобных этому. плюс мои навыки работы с PERL в лучшем случае отрывочны … если вы не хотите это исправить… : D хе-хе.

если на этот вопрос невозможно ответить или он не подходит для этой части форума, пожалуйста, примите мои извинения и укажите мне правильное направление.

большое спасибо!

WR!

Комментарии:

1. Ваш n действительно счетчик, верно? Поддерживает ли ваш заменитель регулярных выражений IDE переменные?

2. ДА. n это счетчик. и, к сожалению, моя IDE не поддерживает переменные в заменителе, о котором я знаю . Notepadd довольно потрясающий, поэтому он вполне может быть способен, я просто могу быть слишком отсталым, чтобы знать это. : P я просто собирался запустить его с помощью быстрого скрипта PERL.

3. У Диомидуса лучший ответ. Мой примерно такой же, но упакован в codepad.org/02u104FU если вы хотите попробовать это сделать….

Ответ №1:

Вы можете сделать это в два этапа.

  1. Замените <li> на <li><a href="#n">
  2. Замените </li> на </a></li>

Или вы можете попытаться быть умным, и это в одном. Вот заменяющая команда в синтаксисе Perl ($ 1 ссылается на то, что было указано в скобках).

 s,<li>(.*)</li>,<li><a href="#n">$1</a></li>,
  

И пока вы там, легко заменить вторую часть шаблона замены выражением, которое будет увеличивать n

 s,<li>(.*)</li>,q{<li><a href="#} .  $n . qq{">$1</a></li>},e
  

Посмотрите, как вы можете запустить это из командной строки:

 echo '<li>do snails make your feet itch?</li>' | 
perl -pe 's,<li>(.*)</li>,q{<li><a href="#} .  $n . qq{">$1</a></li>},e'

<li><a href="#1">do snails make your feet itch?</a></li>
  

Комментарии:

1. идеально! между вами и @Alex, я все это закончу сегодня вечером. большое вам спасибо!

2. еще лучше. черт ВОЗЬМИ! мне нравятся люди на этом сайте. побуждает меня быть все лучшим и лучшим разработчиком. : D

3. 1 очень приятно. Избили меня с помощью s // / e подхода примерно на 10 минут.

Ответ №2:

Поиск

 <li>(.*?)</li>
  

Заменить

 <li><a href="#n">$1</a></li>
  

Комментарии:

1. это было намного проще, чем я думал. время усилить регулярное выражение! спасибо @Alex. 🙂