用于识别所有错误 HTML 特殊字符的正则表达式
Regex to identify all wrong HTML special chars
我有一个巨大的 HTML,其中有几个特殊字符,格式为
或 "�
。
有些是错误的,因为他们缺少首字母&。
我想搜索此类错误的空格字符。我知道我可以通过以下正则表达式搜索所有正确的特殊字符:
\&(?:[a-z]+|#x?\d+);\
但我需要一个 正则表达式来搜索错误的正则表达式(没有首字母 &)。
你能帮助我吗?
提前致谢
编辑:
按照建议,我将 post 举个例子。我的 HTML 包含以下声明:
<![CDATA[<nolink>blablabla blablabla</nolink>]]>quot;
我们有 2 个特殊的 HTML 字符:
quot;
我有兴趣找到第二项,因为它是错误的(缺乏首字母 &)。
所以请求的正则表达式的输出应该是:quot;
您可以在
(?<!&)(?:\b(?:nbsp|quot|divide)|#[0-9a-f]+);
添加您需要的"special chars"。
这个简单的匹配序列,前面没有 &
(负向后视 (?<!&)
确保了这一点),那就是
- nbsp
- quot
- 十六进制数,前缀为
#
(#[0-9a-f]+
)
(添加不区分大小写的标志,使十六进制字符可以大写。)
编辑
在 "word entities" 之前添加了对 word break (\b
) 的检查,以确保它不匹配部分实体(如果有的话)。
编辑 2
要对所有实体(可能还有其他非实体词)进行通用重新匹配,请尝试
(?<!&)(?:\b(?:[a-z]{2,8}\d{0,2})|#[0-9a-f]+);
我试过了:\s(?!&)[A-Za-z0-9]+;
在 Regex101 和
试过了
&wudhilweuh212313i9dioed; wcihecrehc; &wkjdnwkne13131; eiou2ei; 1121i2093;
qeoidjwidw29i1291;
匹配
wcihecrehc; eiou2ei; 1121i2093;
qeoidjwidw29i1291;
我的例子只是随机的。为什么?据我所知,你想要任何具有由 A-Z
、a-z
和 0-9
组成的字符串的东西,它确实以空白字符开头,后面没有 &
和结尾;
。所以我不想让它太受限制。
我有一个巨大的 HTML,其中有几个特殊字符,格式为
或 "�
。
有些是错误的,因为他们缺少首字母&。
我想搜索此类错误的空格字符。我知道我可以通过以下正则表达式搜索所有正确的特殊字符:
\&(?:[a-z]+|#x?\d+);\
但我需要一个 正则表达式来搜索错误的正则表达式(没有首字母 &)。 你能帮助我吗? 提前致谢
编辑:
按照建议,我将 post 举个例子。我的 HTML 包含以下声明:
<![CDATA[<nolink>blablabla blablabla</nolink>]]>quot;
我们有 2 个特殊的 HTML 字符:
quot;
我有兴趣找到第二项,因为它是错误的(缺乏首字母 &)。
所以请求的正则表达式的输出应该是:quot;
您可以在
(?<!&)(?:\b(?:nbsp|quot|divide)|#[0-9a-f]+);
添加您需要的"special chars"。
这个简单的匹配序列,前面没有 &
(负向后视 (?<!&)
确保了这一点),那就是
- nbsp
- quot
- 十六进制数,前缀为
#
(#[0-9a-f]+
)
(添加不区分大小写的标志,使十六进制字符可以大写。)
编辑
在 "word entities" 之前添加了对 word break (\b
) 的检查,以确保它不匹配部分实体(如果有的话)。
编辑 2
要对所有实体(可能还有其他非实体词)进行通用重新匹配,请尝试
(?<!&)(?:\b(?:[a-z]{2,8}\d{0,2})|#[0-9a-f]+);
我试过了:\s(?!&)[A-Za-z0-9]+;
在 Regex101 和
试过了&wudhilweuh212313i9dioed; wcihecrehc; &wkjdnwkne13131; eiou2ei; 1121i2093;
qeoidjwidw29i1291;
匹配
wcihecrehc; eiou2ei; 1121i2093;
qeoidjwidw29i1291;
我的例子只是随机的。为什么?据我所知,你想要任何具有由 A-Z
、a-z
和 0-9
组成的字符串的东西,它确实以空白字符开头,后面没有 &
和结尾;
。所以我不想让它太受限制。