用正则表达式匿名化html

时间:2019-05-29 08:51:36

标签: html regex anonymize

我正在尝试使用正则表达式对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 个答案:

答案 0 :(得分:3)

[^<>]*>的负向搜索,而不是对>的负向搜索,以确保在当前位置后没有其他任何尖括号之前的>(因为这表明您当前在在标签内)。

这还意味着您可以将外观抛在后面:

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

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

仍然,如果可能的话,最好使用HTML解析器解析HTML