正则表达式识别所有错误的HTML特殊字符

时间:2018-05-14 15:04:06

标签: regex regex-negation

我有一个包含多个特殊字符的大型HTML,格式为 "�

其中一些是错误的,因为他们缺少初始&

我想搜索错误的空间字符。我知道我可以通过以下正则表达式搜索所有正确的特殊字符:

       \&(?:[a-z]+|#x?\d+);\

但是我需要正则表达式来搜索错误的(没有初始&)。 你能帮助我吗? 提前致谢

编辑:

正如所建议的那样,我将发布一个例子。我的HTML包含以下声明:

   <![CDATA[<nolink>blablabla&nbsp;blablabla</nolink>]]>quot;

我们有2个特殊的HTML字符:

  • &nbsp;
  • quot;

我有兴趣找到第二个项目,因为它是错误的(laking the initial&amp;)。

因此请求的正则表达式的输出应为:quot;

2 个答案:

答案 0 :(得分:2)

你可以建立

&

添加你需要的“特殊字符”。

这个简单的一个匹配一个序列,而不是一个(?<!&)(负面的lookbehind #确保那个),那是

  • NBSP
  • QUOT
  • 一个十六进制数字,前缀为#[0-9a-f]+\b

(添加不区分大小写的标志以使十六进制字符能够为大写。)

See it here at regex101

修改
在“单词实体”之前添加了对分词(?<!&)(?:\b(?:[a-z]{2,8}\d{0,2})|#[0-9a-f]+); )的检查,以确保它与部分实体(如果有)不匹配。

编辑2
要使通用重新匹配所有实体(可能还有其他非实体单词),请尝试

{{1}}

Here at regex101

答案 1 :(得分:0)

我试过了:\s(?!&)[A-Za-z0-9]+;

使用

Regex101尝试
&wudhilweuh212313i9dioed;  wcihecrehc; &wkjdnwkne13131; eiou2ei; 1121i2093;
qeoidjwidw29i1291; 

匹配

wcihecrehc; eiou2ei; 1121i2093;
qeoidjwidw29i1291;

我的例子只是随机性。为什么?据我了解,您希望任何包含A-Za-z0-9字符串的字符串以空白字符开头,后跟&并结束与;。所以我不想让它太受限制。