Анонимизировать HTML с помощью регулярных выражений - PullRequest
3 голосов
/ 29 мая 2019

Я пытаюсь анонимизировать строку HTML с помощью регулярного выражения для запроса SQL.

https://regex101.com/r/QWt1E1/1

(?<!\<)[^<>\s](?!\>)
<p><em>Hi [User</em></p>
<p><em>Tack f&ouml;r visat intresse.</em></p>
<p><em>Good luck!</em><em>&nbsp;</em></p>
<p><em>Sincerely</em></p>
<p><em>nn nnnnn</nm></p>
<p><em>nnnn nnnnnnnn nnnnn nnnnnnnnn</nm></p>
<p><em>nnnn nnnnn</nm><em>nnnnnn</nm></p>
<p><em>nnnnnnnnn</nm></p>

План состоял в том, чтобы заменить каждыйсимвол, который не находится внутри <>, с n.Это почти работает, но в моем примере он заменяет e в </em>.Не уверен, почему и как это исправить.

Как я могу настроить регулярное выражение, чтобы не заменить e в примере?

1 Ответ

5 голосов
/ 29 мая 2019

Отрицательный прогноз для [^<>]*> вместо просто >, чтобы гарантировать, что за текущей позицией не стоит > перед любыми другими угловыми скобками (потому что это будет означать, что вы в данный момент находитесь внутри тега).

Это также означает, что вы можете отбросить вид сзади:

[^<>\s](?![^<>]*>)
          ^^^^^^

https://regex101.com/r/QWt1E1/3

Тем не менее, было бы лучше проанализировать HTML с помощью анализатора HTML, если это вообще возможно

...