Регулярное выражение для соответствия и перемещения HTML - PullRequest
3 голосов
/ 24 сентября 2019

Мне нужно заменить HTML-фрагмент, присутствующий во многих файлах, захватить всю информацию, которая находится между тегами <td>, и заменить ее (неправильной) информацией, которая находится внутри тегов <li>.

код выглядит так:

<li><b>Details:</b> WRONG TEXT</li>
<li><b>Product:</b> WRONG TEXT</li>
<li><b>Requirements:</b> WRONG TEXT</li>

// There are a lot of codes that should not be changed here, between the above and the one below.

<td>CORRECT TEXT</td>
<td>CORRECT TEXT</td>
<td>CORRECT TEXT</td>

Он должен выглядеть следующим образом:

<li><b>Details:</b> CORRECT TEXT</li>
<li><b>Product:</b> CORRECT TEXT</li>
<li><b>Requirements:</b> CORRECT TEXT</li>

Я создал это регулярное выражение ниже..

(?s)(<li><b>.*?:<\/b>\s+(.*)<\/li>).*?<td>(.*)<\/td>

Но он заменяет друг друга, а не только текст между тегами.

Может кто-нибудь дать мне подсказку, пожалуйста?

РЕДАКТИРОВАТЬ

В образец кода добавлена ​​необходимая информация.

1 Ответ

3 голосов
/ 25 сентября 2019

Возможно, с выражением, аналогичным

(<li><b>.*?<\/b>).*?<\/li>\s*(<li><b>.*?<\/b>).*?<\/li>\s*(<li><b>.*?<\/b>).*?<\/li>(\s*.*?)<td>(.*?)<\/td>\s*<td>(.*?)<\/td>\s*<td>(.*?)<\/td>

и некоторой замене, например,

$1 $5</li>\n$2 $6</li>\n$3 $7</li>\n$4

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

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...