Замена текста в файле .txt с помощью cmd

115
28 февраля 2021, 16:40

В текстовом файле находится размеченный тегами текст. Но эти теги разорваны, например:

< p>12334</p> 
<p >fjfg< / p>

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

<p>12334</p> 
<p>fjfg</p>

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

Answer 1

Можно на js с регулярками что-нибудь изобразить.

Допустим, что страница этого вопроса со сниппетом в ответе и есть «сайт какой-то по типу dirtymarkup»:

const inp = document.getElementById('input'); 
const out = document.getElementById('output'); 
const btn = document.getElementById('fix'); 
 
btn.addEventListener('click', () => { 
  const text = inp.value; 
  output.innerText = text.replace(/<\s*(\/)?\s*([^>\s]+)\s*(\s[^>]*)?>/g, '<$1$2$3>');   
  // $1 - закрывающий слеш 
  // $2 - имя тега 
  // $3 - список аттрибутов, если они есть 
})
<textarea id="input"> 
< p>12334</p> 
<p >fjfg< / p> 
<p attr="a b c">fjfg< / p> 
<p attr="a b c" >fjfg< / p> 
</textarea> 
 
<pre id=output></pre> 
<hr/> 
<button id="fix">Fix</button>

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

Например, что-то вроде <p attr=">a < no space">< / p> заведомо сломается.