使用正则表达式删除html实体并提取文本内容

Mkl*_*Rjv 6 regex

我有一个仅包含 HTML 实体的文本,例如< 我需要将其全部删除并仅获取文本内容:

&nbspHello there<testdata>
Run Code Online (Sandbox Code Playgroud)

所以,我需要从这个部分得到Hello theretestdata。有没有办法使用负前瞻来做到这一点?

我尝试了以下方法:/((?!&.+;).)+/ig但这似乎效果不佳。那么,我如何才能从那里提取所需的文本?

Mah*_*r13 14

查找 HTML 实体的更好语法是以下正则表达式:

/&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-fA-F]{1,6});/ig
Run Code Online (Sandbox Code Playgroud)

此语法忽略虚假实体。


dty*_*ler 4

这里有2条建议:

1)使用 匹配所有实体/(&.+;)/ig。然后,使用您正在使用的任何编程语言,将这些匹配项替换为空字符串。例如,在 php 中使用preg_replace;在 C# 中使用Regex.Replace。请参阅此 SO,了解更多案例的类似解决方案:How to remove htmlspecial chars?

2)如果你真的想使用明文部分来做到这一点,你可以尝试这样的事情:/(?:^|;)([^&;]+)(?:&|$)/ig。它实际上试图做什么,它与没有实体的开始和结束的特殊情况之间的部分相;匹配&。这可能不是正确的方法,您可能会遇到这种情况的不同情况。