Primo Chalice Ответов: 1

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


У меня есть XML следующим образом:

<break name="article_1-1">
<h1>
  <page num="1" />Some heading</h1>
<bl>
  Human name Contributing Writer</bl>
<h3>
  OPINION
</h3>
<p>First Paragraph</p>
<p>Second Paragraph</p>
<p>Third Paragraph</p>
<bq>
  Some value
</bq>
<p>
  Fourth Paragraph with italic values
</p>
<fig>
  <img src="images/img_1-1.jpg" width="1553" height="1050" alt="" />
  <fc>
	Image caption
  </fc>
  <cr>PHOTOGRAPHS BY SOME HUMAN</cr>
</fig>
<h3>
  CITY, STATE
</h3>
</break>


Я хочу, чтобы это было похоже:

<break name="article_1-1">
<h1><page num="1" />Some heading</h1>
<bl>Human name Contributing Writer</bl>
<h3>OPINION</h3>
<p>First Paragraph</p>
<p>Second Paragraph</p>
<p>Third Paragraph</p>
<bq>Some value</bq>
<p>Fourth Paragraph with italic values</p>
<fig><img src="images/img_1-1.jpg" width="1553" height="1050" alt="" /><fc>Image caption</fc><cr>PHOTOGRAPHS BY SOME HUMAN</cr></fig>
<h3>CITY, STATE</h3>
</break>


Я удаляю отступ на более позднем этапе, но мое основное внимание сосредоточено на приведении открывающих и закрывающих XML-тегов в одну строку.

Мне нужно регулярное выражение для этого. Я пробовал кое-что, но думаю, что есть лучший способ.

Пожалуйста помочь.

С уважением

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

string pattern = @"(?:(?:(<\w.>)|(<\w>)|(<\w..>|(<p>)|(\/>)))(\s+)|((<\/(?!(title)|(head)|(break)|(body))\w+>)(\s+)(<\/(?!(title)|(head)|(break)|(body))\w+>))|((<\/fc>)(\s+)(<cr>)))";

string substitution2 = @"$1$2$3$8$14$20$22";

1 Ответов

Рейтинг:
0

Patrice T

Ваше регулярное выражение имеет 22 группы, но только 7 используются в замене, вы, вероятно, можете удалить некоторые из них.
Используйте Debuggex в следующих ссылках, он покажет вам хороший график вашего регулярного выражения.
Насколько я понимаю, код, который вы показываете, не соответствует желаемому результату, поэтому трудно понять, что есть что.

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


CPallini

5.

Patrice T

Спасибо