【问题标题】:Anonymize html with regex使用正则表达式匿名化 html
【发布时间】:2019-05-29 08:51:35
【问题描述】:

我正在尝试使用正则表达式匿名化一个 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 替换不在 中的每个字符。 它几乎可以工作,但在我的示例中,它替换了&lt;/em&gt; 中的e。不知道为什么以及如何解决这个问题。

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

【问题讨论】:

  • 你用什么语言实现这个?

标签: html regex anonymize


【解决方案1】:

[^&lt;&gt;]*&gt; 而非仅&gt; 进行负前瞻,以确保当前位置后面没有任何其他尖括号之前的&gt;(因为这表明您当前位于标签内)。

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

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

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

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

【讨论】:

  • 太棒了,谢谢!需要它是正则表达式,以便在针对 postgresql 数据库的 SQL 查询中运行它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-02
  • 1970-01-01
  • 2015-02-27
  • 1970-01-01
  • 2014-06-08
相关资源
最近更新 更多