我正在尝试使用正则表达式对HTML字符串进行匿名处理,以进行SQL查询。
https://regex101.com/r/QWt1E1/1
(?<!\<)[^<>\s](?!\>)
<p><em>Hi [User</em></p>
<p><em>Tack för visat intresse.</em></p>
<p><em>Good luck!</em><em> </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
?
答案 0 :(得分:3)
对[^<>]*>
的负向搜索,而不是对>
的负向搜索,以确保在当前位置后没有其他任何尖括号之前的>
(因为这表明您当前在在标签内)。
这还意味着您可以将外观抛在后面:
[^<>\s](?![^<>]*>)
^^^^^^
https://regex101.com/r/QWt1E1/3
仍然,如果可能的话,最好使用HTML解析器解析HTML