Member 13915429 Ответов: 1

Есть ли способ использовать регулярное выражение для вставки строки в определенную группу в файле?


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

<Home />

</Home>


Есть ли способ использовать регулярное выражение, чтобы выделить эту группу и вставить строку в середину этой группы? Нравится:

<Home />
hello
</Home>


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

Я попытался выделить группу с помощью
<Home />\n[^.]+</Home>

и заменив его на
$1hello\n$2

но это просто заменяет все это на "Привет", а это совсем не то, чего я хочу. Мне нужно, чтобы он вставил привет в середину домашней группы.

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

MadMyche

Почему бы вам не использовать синтаксический анализатор XML-документов?

1 Ответов

Рейтинг:
5

Patrice T

Цитата:
но это просто заменяет все это на "Привет", а это совсем не то, чего я хочу. Мне нужно, чтобы он вставил привет в середину домашней группы.

Поскольку вам нужно определить "группы" в вашем регулярном выражении, группы-это то, что вы хотите сохранить от исходной строки.
Попробуйте что-нибудь вроде:
(<Home />\n)([^.]+</Home>)


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


Member 13915429

Спасибо, как только я добавил скобки, это сработало.