我的文字只包含HTML实体,例如<
和
我需要删除所有内容并获取文字内容:
 Hello there<testdata>
因此,我需要从此部分获取Hello there
和testdata
。有没有办法使用负向前瞻来做这件事?
我尝试了以下内容:/((?!&.+;).)+/ig
但这似乎并不是很有效。那么,我怎样才能从那里提取所需的文本?
答案 0 :(得分:1)
以下是2条建议:
1)使用/(&.+;)/ig
匹配所有实体。然后,使用您正在使用的任何编程语言,将这些匹配替换为空字符串。例如,在php中使用preg_replace;在C#中使用Regex.Replace。请参阅此SO,了解更多案例的类似解决方案:How to remove html special chars?
2)如果你真的想使用明文部分这样做,你可以尝试这样的事情:/(?:^|;)([^&;]+)(?:&|$)/ig
。它实际上尝试做的是匹配;
和&
之间的部分,以及没有实体的开始和结束的特殊情况。这可能不是可行的方法,你可能会遇到不同的情况。
答案 1 :(得分:0)
查找HTML实体的更好语法是以下正则表达式:
/&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-f]{1,6});/ig
此语法忽略错误的实体。
答案 2 :(得分:0)
它是特定于语言的,但是在Python中,您可以使用html.unescape
(MAN)。喜欢:
import html
print(html.unescape("This string contains & and >"))
#prints: This string contains & and >