Perl regular expression, need help

интернет компьютеры perl xml

Есть хмл, из которого надо удалить всё вхождения
<tag1>
и то, что лежи внутри него. то есть
<a>
<tag1>
</b>
</tag1>
</a>
<c />
должно перевести в
<a>
</a>
<c />

Решил, что с такой задачей справится перл с его регулярными выражениями, но не понимаю, как сделать матчинг по нескольким строкам.

Либо, может быть, есть какой-либо другой способ удалить из xml все ноды (!!!) из командной стоки.
Система Win. То есть возможно использование Power Shell и прочих виндовых благодатей для командной строки.

Примечание:
В том то и дело, что файлов примерно 17 693, именно поэтому и прошу не ручной метод,

Примечание:
Tema.online, меня интересует то, как сделать так, чтобы из файла содержащего запись вида

<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IValidationModeContract" closeTimeout="00:05:00"
openTimeout="00:05:00" receiveTimeout="00:10:00" sendTimeout="00:05:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="6553600" maxBufferPoolSize="524288" maxReceivedMessageSize="6553600"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="128" maxStringContentLength="819200" maxArrayLength="1638400"
maxBytesPerRead="409600" maxNameTableCharCount="1638400" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
</system.serviceModel>

Можно было бы получить файл вида.

<system.serviceModel>
<bindings>
</bindings>
</system.serviceModel>

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

Выражение ваше не работает. Проблема в многострочности. Если бы переводов строки не было, то тогда всё было бы замечательно, но в моём случае переводы строки есть.
И как добиться работающего состаяния, применяя всяческие комбинации из ^,$ и прочей ереси я не понял.
Ответы:
Как бы сделал я. Я бы переименовал xml файл в тхт. Загрузил в MS Word и сделал замену с использованием подстановочных знаков. В таком случае регулярное выражение будет записано следующим образом, разумеется в строке "Найти":
Вас выражение или софт под win интересует.
Если выражение, то
<tag1>\s.*\s</tag1>
Софт дегко в гугле можно найти набрав Regex soft widows или вроде того.
исправленное выражение для большого кол-ва пробельных символов
исправленное выражение для большого кол-ва пробельных символов
чет гугол кипит)
ссылочка еще
тогда присмотритесь к teil или sed
$s =~ s/\s*<tag1>.+?<\/tag1>//gs;
удалит из строки как ты хочешь
Попробуйте модуль XML::Simple из cpan. Он преобразует ваш XML в структуру. С которой вы сможете сделать все что захотите.


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.