3

我正在尝试使用正则表达式匿名化 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. 它几乎可以工作,但在我的示例中,它取代了ein </em>。不知道为什么以及如何解决这个问题。

如何调整正则表达式以不替换e示例中的?

4

1 回答 1

5

负前瞻[^<>]*>代替 just >,以确保当前位置后面没有>任何其他尖括号之前的 a (因为这表明您当前在标签内)。

这也意味着您可以放弃后视:

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

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

不过,如果可能的话,最好使用 HTML 解析器来解析 HTML

于 2019-05-29T08:54:19.957 回答