Member 13915429 Ответов: 1

Существует ли регулярное выражение, которое может выполнять поиск в группе строк и заменять одну строку в этой группе?


например, если у меня есть что-то вроде:

<Directory />
  word
  box
  car
</Directory>


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

<Directory />
  word
  drive
  car
</Directory>



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

Что я уже пробовал:

Я пробовал использовать регулярное выражение, которое гласит::
(<Directory />\s+)box(\s+</Directory>)


и моя замена была:
\1drive\2

но проблема здесь в том, что если есть слова выше или ниже коробки, он их не найдет.

1 Ответов

Рейтинг:
1

Patrice T

Цитата:
Существует ли регулярное выражение, которое может выполнять поиск в группе строк и заменять одну строку в этой группе?

Короткий ответ: да !
Ваше Регулярное Выражение: '(<Directory />\s+)box(\s+</Directory>)'
соответствует ли: '<Directory /> box </Directory>'
Вам нужно улучшить регулярное выражение, чтобы включить новые строки и слова вместе с пробелами, например замену \s+ с (\s|\n|\w)+.

Всего лишь несколько интересных ссылок, которые помогут построить и отладить регулярное выражение.
Вот ссылка на документацию по регулярным выражениям:
perlre - perldoc.perl.org[^]
Вот ссылки на инструменты, помогающие создавать регулярные выражения и отлаживать их:
.Объем тестер регулярное выражение - регулярное выражение шторм[^]
Регулярное Средство Выражения Эспрессо [^]
RegExr: Learn, Build, & Test RegEx[^]
Онлайн-тестер регулярных выражений и отладчик: PHP, PCRE, Python, Golang и JavaScript[^]
Этот пример показывает вам регулярное выражение в виде красивого графика, который действительно полезен для понимания того, что делает регулярное выражение:
Debuggex: онлайн-тестер визуальных регулярных выражений. JavaScript, Python и PCRE.[^]
Этот сайт также показывает регулярное выражение в красивом графике, но не может проверить, что соответствует регулярному выражению:
Regexper[^]